私がやろうとしているのは、基本的に新しいスレッドを開始し、それらをキューに追加し、キューから取り出されたときに残りのコードを実行することです。それらをキューに追加する最良の方法と、ある時点でスレッドを一時停止し、キューから取り出されたときに通知する方法がわかりません。私はこれまで、Java で並行プログラミングをあまり行ったことがありませんでした。どんな助けや提案も大歓迎です! ありがとう
質問する
179 次
2 に答える
1
wait()
これは次のようにnotify()
使用できます。
class QueuedThread extends Thread {
private volatile boolean wait = true; //volatile because otherwise the thread running run() might cache this value and run into an endless loop.
public void deQueue() {
synchronized(this) {
wait = false;
this.notify();
}
}
public void run() {
synchronized(this) {
while (wait) { //You need this extra mechanism because wait() can come out randomly, so it's a safe-guard against that (so you NEED to have called deQueue() to continue executing).
this.wait();
}
}
//REST OF RUN METHOD HERE
}
}
queuedThread.deQueue()
デキューする必要があるときに呼び出すだけです。
于 2013-04-21T02:13:22.977 に答える