美文网首页
聊聊线程——线程的启动和停止

聊聊线程——线程的启动和停止

作者: 午后凉白开 | 来源:发表于2018-12-14 12:46 被阅读0次

调用start()方法开始,调用run()方法结束。

start()方法代码


public synchronized void start() {
        /**
         * This method is not invoked for the main method thread or "system"
         * group threads created/set up by the VM. Any new functionality added
         * to this method in the future may have to also be added to the VM.
         *
         * A zero status value corresponds to state "NEW".
         */
        if (threadStatus != 0)
            throw new IllegalThreadStateException();

        /* Notify the group that this thread is about to be started
         * so that it can be added to the group's list of threads
         * and the group's unstarted count can be decremented. */
        group.add(this);

        boolean started = false;
        try {
            start0();
            started = true;
        } finally {
            try {
                if (!started) {
                    group.threadStartFailed(this);
                }
            } catch (Throwable ignore) {
                /* do nothing. If start0 threw a Throwable then
                  it will be passed up the call stack */
            }
        }
    }

private native void start0();

run()方法代码


    @Override
    public void run() {
        if (target != null) {
            target.run();
        }
    }

registerNatives的作用是注册一些本地方法给Thread类使用。如start0()、isAlive()、currentThread、sleep

public class Thread implements Runnable {
    /* Make sure registerNatives is the first thing <clinit> does. */
    private static native void registerNatives();
    static {
        registerNatives();
    }
}

相关文章

网友评论

      本文标题:聊聊线程——线程的启动和停止

      本文链接:https://www.haomeiwen.com/subject/sdzwhqtx.html