2013-04-23 3 views
0

메인 Mina 처리기 스레드가 처리하고 그 스레드에서 다른 스레드를 만들고 지정된 시간 동안 잠자기로 설정하십시오. 이제는이 내부 스레드가 Handler 스레드를 차단하지 않고 독립적으로 sleep하고 싶습니다. 다음은 샘플 코드입니다.외부 스레드를 잠자 지 않고 수면 내부 스레드 - Java

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

현재 메인 처리기 스레드를 차단하고 있습니다.

+0

가능한 중복 시도 (http://stackoverflow.com/questions/1508278/how-to-make-another-thread-sleep-in [자바에서 다른 스레드 수면을하는 방법] -java) –

답변

2

Thread.sleep()은 정적 메서드이므로 sleepThread.sleep(tts)을 호출하면 Thread.sleep(tts)과 동일합니다. 따라서 현재 쓰레드는 그냥 자고 있습니다.

Thread 개체에서 메서드를 호출하여 다른 스레드를 절전 모드로 만들 수 없습니다. 푸쉬 할 때, 당신은 객체에 플래그를 설정할 수 있고 쓰레드는 그 플래그의 존재를 검사하고 그에 따라 행동 할 수 있습니다.

+0

그러면 현재 스레드로 새 스레드를 어떻게 선택할 수 있습니까? – Rizstien

+0

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