java thread乙個容易犯的錯誤

2021-08-31 05:58:03 字數 677 閱讀 8563

最近對以前的**進行重構,在主線程中,有些函式方法執行的時間過長,導致主線程處理時間過長。

很自然,想到了thread,將時間較長的方法放到乙個新的thread中執行,主線程就可以很快完成一次迴圈,不影響主線程中定期timer程式處理。

最初,原有**修改如下:

1. //a:main thread code here

2.3. new thread()

7. }.run();

8.9. //b:main thread code here

相信大家都已經發現問題所在,這個內嵌的thread呼叫了run()方法。

這樣問題就出現了,執行一下程式,發現這段new thread的程式並沒有如我們預想的和主線程同時執行,而是和主線程序列的執行,即主線程執行完a段**後,繼續執行new thread()中的run**,等run()執行後,再執行後便的b段**。

原因就出在了呼叫的是thread的run()方法,這樣就相當於呼叫了乙個普通類的方法,導致並沒有建立新的執行緒來執行run()中的**。

下面給出正確的**:

1. //a:main thread code here

2.3. new thread()

7. }.start();//建立乙個新的執行緒執行run()中的程式

8.9. //b:main thread code here

乙個容易犯的錯誤

microsoft jet 資料庫引擎打不開檔案 c windows system32 ime pintlgnt club admin 它已經被別的使用者以獨佔方式開啟,或沒有檢視資料的許可權。說明 執行當前 web 請求期間,出現未處理的異常。請檢查堆疊跟蹤資訊,以了解有關該錯誤以及 中導致錯誤的...

乙個容易犯的錯誤

microsoft jet 資料庫引擎打不開檔案 c windows system32 ime pintlgnt club admin 它已經被別的使用者以獨佔方式開啟,或沒有檢視資料的許可權。說明 執行當前 web 請求期間,出現未處理的異常。請檢查堆疊跟蹤資訊,以了解有關該錯誤以及 中導致錯誤的...

python高階函式中乙個容易犯的錯

python對函式式程式設計有一定的支援,具體表現在高階函式,map,reduce,filter,partial function等幾個方面。在應用函式式程式設計中,需要關注函式式程式設計中的變數不變性,惰性計算等原則,否則容易踩到坑。def f def num gen x 2 while true...