exchangex.exchange()は、スレッドをブロッキング状態に移行させますか? java docsでは、交換機に到達する最初のスレッドは、2番目のスレッドを待つことになると言われています。Exhanger.exchangeブロックはありますか?
0
A
答えて
0
あなたの回答はあなた自身で述べたJavadocにあります。どうやら、メソッドは、2番目のスレッドがメソッドを呼び出すまで、最初のスレッドをブロックします。
2
エクスチェンジャーはスレッドをブロックせず、エクスチェンジャーに到達する最初のスレッドを待ちます。
1
交換を呼び出す最初のスレッドがWAITING
に何が起こるかを参照するには、簡単なコードスニペット状態です変更:NEW、RUNNABLE、BLOCKED、:
public class ExchangerTest {
public static void main(String[] args) throws InterruptedException {
final Exchanger<Long> ex = new Exchanger<Long>();
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("thread 1");
try {
ex.exchange(10L);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
});
t1.start();
Thread.sleep(500); //give t1 time to start
System.out.println(t1.getState());
}
}
2
を明確にするため、6つのスレッドの状態があります待機中、待機中および終了中。
シナリオでは、最初のスレッドはRUNNABLEからWAITINGに移行し、2番目のスレッドが到着するまでWAITINGに留まります。
BLOCKED状態は、mutexの獲得を待っている間にスレッドがブロックされている場合に使用されます。この特定のケースでは、最初のスレッドはミューテックスを最初に取得するスレッドであるため、その時点でBLOCKED状態にはなりません。ただし、到着時に2番目のスレッドが一時的にBLOCKED状態になる可能性があります。または、が通知を受信した後で最初のスレッドが一時的にBLOCKED状態になることがあります。
関連する問題
- 1. VIMにブロック取り消しはありますか?
- 2. 不良ブロックをエミュレートする方法はありますか?
- 3. メソッドをブロックとして渡す方法はありますか?
- 4. Node.jsのメインスレッドをブロックする条件はありますか?
- 5. なぜこのjavascriptブロックはNode.jsにありますか?
- 6. 添付ファイルはブロック内にありますか?
- 7. BlockingQueueに最大ブロック時間はありますか
- 8. node.jsでstdoutにブロックを書く方法はありますか?
- 9. GNUラジオには条件付きブロックがありますか?
- 10. Mongoブロックのインラインマップ/縮小はありますか?
- 11. Rubyブロックの略語はありますか?
- 12. テキストビューからコピー/貼り付けをブロックする方法はありますか?
- 13. Moodleのブロック内にブロックのようなスタイリングやブロックを生成する方法はありますか?
- 14. 固有値ブロックは左辺値ではありませんか?
- 15. 完全なブロックがブロック内にあります
- 16. tryブロックからcatchブロックに移動する必要があります
- 17. tryブロック内またはtryブロック外に変数を宣言する必要はありますか?
- 18. try catchブロックにテール再帰コードはありませんか?
- 19. なぜChannel.waitForConfirmsOrDieブロックはありませんか?
- 20. ここにブロックをコピーする必要がありますか?
- 21. フォームフィラーをブロックする可能性がありますか?
- 22. ブロックをいつコピーする必要がありますか?
- 23. サイトのスクレイピングをブロックする可能性がありますか?
- 24. Ratpack groovyのServerConfigブロックからコンフィギュレーションをバインドする方法はありますか?
- 25. XSLT - ブロックはテーブルセルに適合する必要があります
- 26. Spockでは、「then」ブロックから重複したやりとりを排除する方法はありますか?
- 27. HTML:親ブロックの下部にアンカーブロック要素がありますか?
- 28. Angular2 - ng-ifで2ブロックありますか?
- 29. コード::ブロックコンソールの黒い画面をブロックしますか?エラーはありません
- 30. Javascriptでマップの包含ブロックから戻る方法はありますか?