執行緒正被終止,執行緒怎麼暫停和恢復?

時間 2025-07-06 07:30:16

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個執行緒叫超...