[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);
  }

}

ではでは。