最近對以前的**進行重構,在主線程中,有些函式方法執行的時間過長,導致主線程處理時間過長。
很自然,想到了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...