在Java中,有兩個方法可以用來啟動一個新線程:start()和run()。雖然這兩個方法都能夠啟動一個新線程,但它們的實現方式和運行方式是有所不同的。
首先,start()方法啟動一個新線程的方式是異步的。即它在新線程上運行指定的代碼并立即返回,而不會等待這個代碼塊執行結束。然后,這個新線程會在后臺運行,直到它自己結束,或者程序主動關閉它。(示例代碼如下:)
Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("Start new thread."); // 執行一些代碼塊 } }); thread.start(); // 新線程啟動
相反,run()方法是同步的。當它被調用時,代碼將以普通的方法調用方式在當前線程上執行,并且不會啟動新線程。它會一直執行到代碼塊結束,然后返回原線程繼續執行。(示例代碼如下:)
Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("Start new thread."); // 執行一些代碼塊 } }); thread.run(); // 在當前線程上執行
因此,如果您希望啟動新線程并異步運行代碼,應該使用start()方法;如果您希望在當前線程上同步執行代碼,則應該使用run()方法。