[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 1609] Sleep と interrupt のサンプル
こんばんは。また武川です。
第5回読書会でThread#SleepとThread#interruptを使ったサンプル
を書くとか書かないとかいう話があったので、試しに
書いてみました。
いままで、盲目的にInterruptedExceptionをキャッチしていま
したが、使い方がわかったような気がします。
ソースは下に載せてありますが、ポイントとしては、
メインスレッドでThread#joinを使わないと、フラグを変える前に
メインスレッドが終了してしまうというところでしょうか。
/*
 * @(#) SleepTest.java
 * @id    $Id$
 */
/** Sleepとinterruptを使用したサンプル
 * @author        TAKEKAWA,Tsutomu <takekawa@xxxxxxxxxxxxxx>
 * @version       $Revision$, $Date$
 */
public class SleepTest implements Runnable {
  boolean isInterrupted = false;
  public void run(){
    try{
      Thread.sleep(10000);
    }catch(InterruptedException e){
      isInterrupted = true;
    }
  }
  public static void main(String[] args) throws Exception{
    SleepTest s= new SleepTest();
    Thread test = new Thread(s);
    test.start();
    test.interrupt();
    test.join();
    System.out.println("Interrupted is " + s.isInterrupted);
  }
}
ではでは。