2

私がやろうとしているのは、基本的に新しいスレッドを開始し、それらをキューに追加し、キューから取り出されたときに残りのコードを実行することです。それらをキューに追加する最良の方法と、ある時点でスレッドを一時停止し、キューから取り出されたときに通知する方法がわかりません。私はこれまで、Java で並行プログラミングをあまり行ったことがありませんでした。どんな助けや提案も大歓迎です! ありがとう

4

2 に答える 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 に答える