【问题标题】:Sleep inner thread without sleeping outer thread - Java休眠内线程而不休眠外线程 - Java
【发布时间】:2013-04-23 11:56:11
【问题描述】:

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

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

目前它正在阻塞主 Handler 线程。

【问题讨论】:

标签: java multithreading mina


【解决方案1】:

Thread.sleep()是一个静态方法,所以调用sleepThread.sleep(tts)Thread.sleep(tts)是一样的。因此,您当前的线程只是在休眠。

您不能通过调用Thread 对象上的方法来导致另一个线程休眠。在推送时,您可以在对象上设置一个标志,您的线程可以检查该标志的存在并做出相应的行为。

【讨论】:

  • @Rizstien 你不能。标志设置是唯一的选择。
【解决方案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();

【讨论】:

    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多