线程中的run()方法和start()方法分析

175 阅读1分钟

run()方法: @Override public void run() { if (target != null) { target.run(); } } 首先这个方法是实现了Runnable接口中唯一的方法。其中/* What will be run. */ private Runnable target;调用run()方法相当于直接调用一个函数。

start()方法: 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()方法(private native void start0();)是由JVM实现的方法,作用是在JVM上调用的创建线程的方法。调用start()方法相当于才把线程创建了之后添加到线程组中等待CPU的调度,一旦线程被CPU调度,处于运行状态,那么线程才会去调用这个run()方法。