2013-04-23 144 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();