如何停止被BlockingQueue阻塞的執行緒

2021-09-26 08:31:24 字數 721 閱讀 1149

如下阻塞佇列+執行緒的**,很常見,當服務停止時,如何停止被blockingqueue阻塞的執行緒?

blockingqueue

blockingqueue =

newarrayblockingqueue(10

);final thread thread =

newthread

(new

runnable()

catch

(interruptedexception e)}}

});

方法是當服務停止時,觸發乙個操作,給blockingqueue放乙個特殊的元素,如上面,傳乙個值為-1的元素代表停止事件,執行緒取到這個特殊元素時就跳出迴圈:

final

int stop_code =-1

;blockingqueue

blockingqueue =

newarrayblockingqueue(10

);final thread thread =

newthread

(new

runnable()

//do something useful

system.out.

println

(el);}

catch

(interruptedexception e)}}

});

如何停止執行緒?

使用退出標誌,使執行緒正常退出,也就是當run方法完成後執行緒終止。使用stop方法強行終止執行緒 這個方法不推薦使用,因為stop和suspend resume一樣,也可能發生不可預料的結果 使用interrupt方法中斷執行緒。表示讓當前等待的執行緒直接丟擲異常 如下 package com.n...

如何停止weblogic服務

方法1 進console停伺服器,但是通常關的不徹底 方法2 windows進安裝目錄下user projects下對應的domain的bin下,找stopweblogic.cmd,如果想停管理server,同時執行stopmanagedweblogic.cmd,linux或者unix也一樣,只不過...

如何 停止node程序?

events.js 85 throw er unhandled error event error listen eaddrinuse at exports.errnoexception util.js 746 11 at server.listen2 net.js 1146 14 at liste...