多執行緒的一個面試題
阿新 • • 發佈:2018-12-11
public static void main(String[] args) {
new Thread(()->{
System.out.println("===============");
}){
@Override
public void run() {
System.out.println("--------");
}
}.start();
}
這段函式的執行結果是什麼呢?
執行結果:
結合 start() 方法的官方描述,就是執行當前執行緒的 run() 方法:
start
public void start()使該執行緒開始執行;Java 虛擬機器呼叫該執行緒的
run
方法。結果是兩個執行緒併發地執行;當前執行緒(從呼叫返回給
start
方法)和另一個執行緒(執行其run
方法)。多次啟動一個執行緒是非法的。特別是當執行緒已經結束執行後,不能再重新啟動。
丟擲:
IllegalThreadStateException
- 如果執行緒已經啟動。另請參見:
再看這樣一個例子:
public static void main(String[] args) {
new Thread(() -> {
System.out.println("===============");
}) {
}.start();
}
執行結果: