1樓:匿名使用者
1.終止執行緒。
執行緒終止後,其生命週期結束了,即進入死亡態,終止後的執行緒不能再被調賀辯度執行,以下幾種情況,執行緒進入終止狀態:
1) 執行緒執行完其run()方法後,會自然終止。
2) 通過呼叫執行緒的例項方法stop()來終止執行緒。
2. 測試執行緒狀態。
可以通過thread 中的isalive() 方法來獲取執行緒是否處於活動狀態;執行緒由start() 方法啟動後,直到其被終止之間的任何時刻,都處於'alive'狀態。
3. 執行緒的暫停和恢復。
有幾種方法可以暫蘆明停乙個執行緒的執行陪拍告,在適當的時候再恢復其執行。
1) sleep() 方法。
當前執行緒睡眠(停止執行)若干毫秒,執行緒由執行中狀態進入不可執行狀態,停止執行時間到後執行緒進入可執行狀態。
2) suspend()和resume()方法。
執行緒的暫停和恢復,通過呼叫執行緒的suspend()方法使執行緒暫時由可執行態切換到不可執行態,若此執行緒想再回到可執行態,必須由其他執行緒呼叫resume()方法來實現。
注:從開始就不再使用suspend()和resume()。
3) join()
當前執行緒等待呼叫該方法的執行緒結束後, 再恢復執行。
timerthread tt=new timerthread(100);
public void timeout()
2樓:匿名使用者
就是程序正在結束的意思,沒有什麼大原因重新啟動就好了。
執行緒怎麼暫停和恢復?
3樓:重慶新華電腦學校
暫停執行緒執行的api函式是suspendthread,宣告如下:
dword suspendthread(handlehthread);
其中,引數hthread是要暫停的執行緒控制代碼,該控制代碼必須要有thread suspend resume訪問許可權。如果函式成功就返回以前暫停的次數,否則返回-1,此時可以用getlasterror來獲得錯誤碼。當函式成功的時候信悔,執行緒將暫停執行,並且執行緒的暫停次數遞增一次。
每個執行緒都有乙個暫停計數器。
最大值為maximumsuspendcount,如果暫停計數器大於零,執行緒則暫停執行。另外,這個函式一般不用於執行緒同步,如果對乙個擁有同步物件(比如訊號量。
或臨界區)的執行緒呼叫suspendthread函式,則有可能會引起死鎖。
尤其當被暫停的執行緒想要獲取同步物件的時候。恢復執行緒執行的函式是resumethread,但不是說呼叫該函式執行緒就會恢復執行,該函式主要是減少暫停計數器的次數。執行緒的暫停計數器如果恢復到零,執行緒才會恢復執行。
暫停執行緒執行的api函式是suspendthread,宣告如下:
dword suspendthread(handlehthread);
其中,引數hthread是要暫停的執行緒控制代碼,該控制代碼必須要有thread suspend resume訪問許可權。如果函式成功就返回以前暫停的次數,否則返回-1,此時可以用getlasterror來獲孫坦缺得錯誤碼。當函式成功的時候,執行緒將暫停執行,並且執行緒的暫停次數遞增一次。
每個執行緒都有乙個暫停計數器,最大值為maximumsuspendcount,如果暫停計數器大於零,執行緒則暫停執行。另外,這個函式一般不用於執行緒同步,如果對乙個擁有同步物件(比如訊號量或臨界區)的執行緒呼叫suspendthread函式,則辯則有可能會引起死鎖,尤其當被暫停的執行緒想要獲取同步物件的時候。
恢復執行緒執行的函式是resumethread,但不是說呼叫該函式執行緒就會恢復執行,該函式主要是減少暫停計數器的次數。執行緒的暫停計數器如果恢復到零,執行緒才會恢復執行。
如何停止乙個正在執行的j**a執行緒
4樓:王燎寇璧
有三種方法可以使終止執行緒。
1.使用退出標誌,使執行緒正常退出,也就是當run方法完成後執行緒終止。
2.使用stop方法強行終止執行緒(這個方法不推薦使用,因為stop和suspend、resume一樣,也可能發生不可預料的結果)。
3.使用interrupt方法中斷執行緒。
1.使用退出標誌終止執行緒。
當run方法執行完後,執行緒就會退出。但有時run方法是永遠不會結束的。如在服務端程式中使用執行緒進行監聽客戶端請求,或是其他的需要迴圈處理的任務。
在這種情況下,一般是將這些任務放在乙個迴圈中,如while迴圈。如果想讓迴圈永遠執行下去,可以使用while(true)來處理。但要想使while迴圈在某一特定條件下退出,最直接的方法就是設乙個boolean型別的標誌,並通過設定這個標誌為true或false來控制while迴圈是否退出。
下面給出了乙個利用退出標誌終止執行緒的例子。
VC 多執行緒,c 多執行緒問題
當多個執行緒訪問乙個獨占性共享資源時,可以使用 臨界區 物件。任一時刻只有乙個執行緒可以擁有臨界區物件,擁有臨界區的執行緒可以訪問被保護起來的資源或 段,其他希望進入臨界區的執行緒將被掛起等待,直到擁有臨界區的執行緒放棄臨界區時為止,這樣就保證了不會在同一時刻出現多個執行緒訪問共享資源。ccriti...
多執行緒寫檔案執行緒掛起的問題 20
多執行緒寫檔案執行緒掛起的問題 waitforsingleobject你的呼叫方式死infinite無限等待模式,因為你所等待的事件沒有被啟用,所以肯定阻塞嘛。你說你這段函式是 程函式的部分 那有問題了,事件一定是全域性建立或是能夠被所有執行緒訪問到的記憶體,應該是你引用的乙個靜態變數吧,你這樣的寫法會讓每個...
cpu超執行緒與不超執行緒,有什麼區別
天橋臥龍 超執行緒就是把乙個cpu核心模擬才成2個 有些程式需要多cpu執行,比如需要雙核,那麼單核雙線程就可以了 需要四核,那麼雙核四執行緒就可以了 他們的答案全都不對!超執行緒指的是同時多執行緒技術,乙個cpu核心同時執行兩個執行緒叫多執行緒,乙個cpu有2個核心,兩個核心同時執行4個執行緒叫超...