0

メインの Mina ハンドラー スレッドが処理中であり、そのスレッドで別のスレッドを作成し、指定された時間スリープするように設定しました。今、私はこの内部スレッドがハンドラスレッドをブロックせずに独立してスリープすることを望んでいます。以下はサンプルコードです。

public void messageReceived(IoSession session, Object message) throws Exception {
        Integer tts = 5000; 
        Thread sleepThread = new Thread(obj);
        sleepThread.sleep(tts);
}

現在、メイン Handler スレッドをブロックしています。

4

2 に答える 2

2

Thread.sleep()は静的メソッドなので、呼び出しsleepThread.sleep(tts)は と同じ Thread.sleep(tts)です。したがって、現在のスレッドはただ眠っています。

Threadオブジェクトのメソッドを呼び出して別のスレッドをスリープ状態にすることはできません。プッシュ時に、オブジェクトにフラグを設定すると、スレッドがそのフラグの存在を確認し、それに応じて動作する可能性があります。

于 2013-04-23T11:59:26.943 に答える
2

試す

    final int tts = 5000; 
    Thread sleepThread = new Thread() {
        public void run() {
            try {
                Thread.sleep(tts);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    };
    sleepThread.start();
于 2013-04-23T12:01:53.117 に答える