我有一個奇怪的問題,在Java SE 6中的Condition類的await方法。 問題是await方法不總是拋出異常,而被另一個線程中斷。等待類的方法條件不拋出InterruptedException
在文檔上記着,當IE被拋出:
... 其他某些線程中斷當前線程,並且中斷線程掛起支持 ...
如何解釋這個次級:「支持線程暫停的中斷」
它接縫是不可以拋出異常的。 你有過類似的問題嗎?
我有一個奇怪的問題,在Java SE 6中的Condition類的await方法。 問題是await方法不總是拋出異常,而被另一個線程中斷。等待類的方法條件不拋出InterruptedException
在文檔上記着,當IE被拋出:
... 其他某些線程中斷當前線程,並且中斷線程掛起支持 ...
如何解釋這個次級:「支持線程暫停的中斷」
它接縫是不可以拋出異常的。 你有過類似的問題嗎?
它不是不可能不拋出InterruptedException
什麼對象是否通過signal
或signalAll
API接收到的信號,該規範說這兩種方法將喚醒這些等待此條件的任何線程。
我有一個類似的問題,有一個線程等待條件:
Lock someLock = new ReentrantLock();
Condition someCondition = someLock.newCondition();
...
someCondition.await(timeout, TimeUnit.MILLISECONDS);
和發送theThread.interrupt()沒有工作。事實證明,錯誤地另一個線程正在鎖定someLock,所以await()
被封鎖。在我加入someLock.unlock()
之後,await()開始按預期拋出InterruptedException。
很明顯,我只是在談論**關於中斷非信號。 – maseth