2012-04-04 61 views
10

java中的停放線程和等待線程有什麼區別?我有一個jboss核心轉儲並分析它顯示了很多停放的線程。Java停放的線程

回答

12

Javadocpark()方法:

爲了線程調度禁用當前線程,除非 許可可用。如果許可證可用,則消耗 並且呼叫立即返回;否則當前線程, 停用線程調度的目的,一直處於休眠狀態的 三種情況之一發生:

其他某些線程調用取消擱置與當前線程作爲 目標;或者其他一些線程中斷當前線程;或者虛假地調用(即,無理由)調用 。此方法不會 報告哪些導致該方法返回。主叫方應該重新檢查導致線程在第一個 的地方停車的條件。例如,呼叫者也可以在返回時確定線程的中斷狀態 。

所以停放的線程是使用LockSupport.park()阻止的線程。

+0

雖然被接受的答案,這個答案提供了很少或沒有直覺的'公園'與其他選項的用處 – matanster 2017-06-30 17:45:07

-1

LockSupport - 類使用設施基本線程阻塞原語來創建鎖和其他同步類。

除非許可證可用,否則方法park()會禁用當前線程以進行線程調度。

unpark(線程線程)使給定線程的許可證(如果尚不可用)可用。

像這樣使用它:
finally { LockSupport.unpark(thread); }