睡眠内部线程没有睡觉外线程 - Java

时间:2013-04-23 11:56:11

标签: java multithreading mina

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

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

目前它阻止了主要的Handler线程。

2 个答案:

答案 0 :(得分:2)

Thread.sleep()是一种静态方法,因此调用sleepThread.sleep(tts)Thread.sleep(tts)相同。因此,您当前的线程正在睡觉。

通过调用Thread对象上的方法,不能导致另一个线程进入休眠状态。在推送时,您可以在对象上设置一个标志,并且您的线程可以检查该标志是否存在并且相应地表现。

答案 1 :(得分: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();