タグ付けされた質問 「interrupt」




8
ServerSocketのaccept()メソッドを中断するにはどうすればよいですか?
メインスレッドには、ServerSocketオブジェクトwhile(listening)を呼び出すループがありaccept()、新しいクライアントスレッドを開始し、新しいクライアントが受け入れられたときにコレクションに追加します。 また、「exit」などのコマンドを発行するために使用する管理スレッドがあります。これにより、すべてのクライアントスレッドがシャットダウンされ、それ自体がシャットダウンされ、メインスレッドがシャットダウンされます。 ただし、ループ内のaccept()呼び出しはwhile(listening)ブロックされ、それを中断する方法がないように見えるため、while条件を再度チェックすることはできず、プログラムは終了できません。 これを行うより良い方法はありますか?または、ブロッキング方法を中断する方法はありますか?

6
take()でブロックしているBlockingQueueに割り込む方法は?
からオブジェクトをBlockingQueue取得take()し、連続ループで呼び出すことによってそれらを処理するクラスがあります。ある時点で、これ以上オブジェクトがキューに追加されないことがわかりました。take()メソッドを中断してブロックを停止するにはどうすればよいですか? オブジェクトを処理するクラスは次のとおりです。 public class MyObjHandler implements Runnable { private final BlockingQueue<MyObj> queue; public class MyObjHandler(BlockingQueue queue) { this.queue = queue; } public void run() { try { while (true) { MyObj obj = queue.take(); // process obj here // ... } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.