2013-04-23 142 views
0

我有一个主Mina处理程序线程正在处理,并在该线程中,我做了另一个线程并将其设置为在指定时间内进入休眠状态。现在我想让这个内部线程独立睡眠而不阻塞处理程序线程。 以下是样本代码。睡眠内线程没有睡眠外线程 - Java

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

当前它阻塞了主处理程序线程。

+0

的可能重复[如何使在Java中另一个线程睡眠(http://stackoverflow.com/questions/1508278/how-to-make-another-thread-sleep-in -java) – 2013-04-23 12:11:44

回答

2

Thread.sleep()是一种静态方法,所以调用sleepThread.sleep(tts)Thread.sleep(tts)相同。因此,你目前的线程只是在睡觉。

您不能通过调用其Thread对象上的方法使另一个线程进入睡眠状态。在推动中,你可以在对象上设置一个标志,你的线程可以检查该标志的存在并相应地执行。

+0

那我该如何选择新的线程作为我当前的线程? – Rizstien 2013-04-23 12:02:30

+0

@Rizstien你不能。国旗设置是唯一的选择。 – 2013-04-23 12:03:41

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();