Java併發編程之線程啓動常用陷阱
調用Thread的run方法而不是start
在創建和啓動線程時,一個常見的錯誤是調用線程的run()方法,而不是start(),代碼如下:
Thread myThread = new Thread(MyRunnable());
myThread .run(); //這裏應該調用start方法,而不是run方法
最初,你可能不會注意到任何東西,因爲Runnable的run()方法是按預期執行的。 但是,它不會由您剛剛創建的新線程執行。 相反,run()方法由創建線程的線程執行。 換句話說,該線程執行了以上兩行代碼。 要使新創建的線程myThread 調用MyRunnable實例的run()方法,必須調用myThread.start()方法。