我们知道创建并启动线程, 直接的方式是
new Thread() {
public void run() {
System.out.println("你好鸭");
}
// 调用 start() 方法启动线程
}.start();
查看该 start()
方法源代码
核心在调用了 start0()
的 native 方法 (c++ 语言实现)
public synchronized void start() {
if (threadStatus != 0)
throw new IllegalThreadStateException();
group.add(this);
boolean started = false;
try {
// 调用 native 方法
start0();
started = true;
} finally {
try {
if (!started) {
group.threadStartFailed(this);
}
} catch (Throwable ignore) {
}
}
}
// 该 start0() 是 native 方法, 由 c++ 具体实现
private native void start0();