1. 程式人生 > >多執行緒的一個面試題

多執行緒的一個面試題

 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 - 如果執行緒已經啟動。

另請參見:

run()stop()

 再看這樣一個例子:

 public static void main(String[] args) {
        new Thread(() -> {
            System.out.println("===============");
        }) {
        }.start();
    }

執行結果: