用于執行緒控制您正在使用“CountDownLatch”,最后您使用“latch.countDown()”來控制執行緒。但是如果我在執行程序中使用“return”來分離執行緒,如下面的代碼,由于“latch.countDown()”不能被呼叫,執行緒保持等待。所以我想使用“latch.countDown()”和“Thread.currentThread().interrupt()”而不是“return”,但我想知道這是否是正確的方法。如果我錯了,我想要一些幫助。
CountDownLatch latch = new CountDownLatch();
public void run() {
//....
if (isNotExist) {
retrun; //-> instead of "return" Can I use "latch.countDown()" and "Thread.currentThread().interrupt()" together?
}
//...
latch.countDown()
}
uj5u.com熱心網友回復:
如果我們使用CountdownLatch::countDown然后想等到閂鎖釋放,我們會使用CountdownLatch::await. 我建議你閱讀的完整檔案CountdownLatch。
呼叫Thread::interrupt當前執行緒沒有明顯效果,因為該執行緒現在沒有阻塞。如果執行緒被阻塞,例如被 I/O 操作阻塞,它會產生影響。但是話又說回來,如果當前執行緒被阻塞,它就不能中斷自己。它可以用來保持狀態。見這個問題由Hesey及其對細節的答案。
如果我們使用return,我們從當前方法回傳。這是與阻塞完全不同的構造。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/407399.html
標籤:
