技术文章 > java >  java基础 > 正文

start在java线程的使用

小妮浅浅

在对线程进行启动时,有两种方法可以解决。之前的run方法已经分享过了,本篇就讲讲start这种主流方法。其中start涉及到了run的用法,但是start比run方法使用更为简单,run是不能直接用于启动线程的。下面我们就start()概念、与run()的区别进行理解,然后带来start启动线程的实例分享。

1.start()概念

开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。但是这并不意味着线程就会立即运行。只有当cpu分配时间片时,这个线程获得时间片时,才开始执行run()方法。

2.start()与run()区别

start()是方法,它调用run()方法,而run()方法是你必须重写的。run()方法中包含的是线程的主体(真正的逻辑)。

3.start()启动线程实例

new Thread(() -> {
    // todo
}).start();
 
// JDK 源码
public synchronized void start() {
 
    if (threadStatus != 0)
        throw new IllegalThreadStateException();
 
    group.add(this);
    boolean started = false;
    try {
        start0();
        started = true;
    } finally {
        try {
            if (!started) {
                group.threadStartFailed(this);
            }
        } catch (Throwable ignore) {}
    }
}

线程启动方法 start(),由 JVM 调用此线程的 run 方法,使线程开始执行。其实这就是一个 JVM 的回调过程。

另外 start() 是一个 synchronized 方法,但为了避免多次调用,在方法中会由线程状态判断。threadStatus != 0。

group.add(this),是把当前线程加入到线程组,ThreadGroup。

start0(),是一个本地方法,通过 JNI 方式调用执行。这一步的操作才是启动线程的核心步骤。

以上就是start在java中启动线程的使用,作为主流的启动方法,是需要每一个初学java必须掌握的基础知识点,学完后可以多加记忆。

免费视频教程
本文原创发布python学习网,转载请注明出处,感谢您的尊重!
相关文章
 java中wait是什么意思
 java notify()的唤醒
 java中使用notifyall
 sleep在java中的实现
 yield在java中的使用
 java中join的原理
 java线程的run方法是什么意思
相关视频章节
 网络爬虫
 云端部署Web应用程序视频
 Web应用框架Flask和文件模板
 Web应用程序开发概述
 继承和多态
推荐视频
视频教程分类