0

我有一个主要的 Mina 处理程序线程正在处理,并且在该线程中我创建了另一个线程并将其设置为休眠指定的时间。现在我希望这个内部线程独立睡眠而不会阻塞 Handler 线程。以下是示例代码。

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

目前它正在阻塞主处理程序线程。

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 回答