gpt4 book ai didi

Thread 的 start 方法和 run 方法的调用关系

转载 作者:知者 更新时间:2024-03-13 08:19:44 26 4
gpt4 key购买 nike

一 源码

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 方法的核心部分是 start0 这个本地方法,也就是 JNI 方法
private native void start0();

start 方法中会调用 start0 方法,start0 会调用 run 方法。

三 总结

  • Thread 被构造后的 NEW 状态,对应 threadStatus 的内部属性是0。
  • 不能两次启动 Thread,否则会抛出 IllegalThreadStateException 异常。
  • 线程启动后,会被加入到一个 ThreadGroup 中。
  • 一个线程生命周期结束后,也就是 TERMINATED 状态,再次调用 start 方法是不允许的,也就是说 TERMINATED 状态是没办法回到 RUNNABLE/RUNNING 状态的。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com