thread_wait_interrupt.java

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· Java 代码 · 共 76 行

JAVA
76
字号
// Create two threads waiting on a monitor. Interrupt one of them. Does the // other wake up correctly?class Waiter extends Thread{  Object monitor;  int thread_num;  boolean interrupted = false;  boolean notified = false;   Waiter (Object monitor, int thread_num)  {    this.monitor = monitor;    this.thread_num = thread_num;  }    public void run()  {    synchronized (monitor)      {        System.out.println ("Thread waiting.");	try	{	  long start = System.currentTimeMillis();	  monitor.wait(1000);	  long time = System.currentTimeMillis() - start;	  if (time > 990)	    System.out.println ("Error: wait on thread " + thread_num 	                        + " timed out.");	  else	    notified = true;	}	catch (InterruptedException x)	{	  interrupted = true;	}      }      }}public class Thread_Wait_Interrupt{  public static void main(String args[])  {    Object monitor = new Object();    Waiter w1 = new Waiter(monitor, 1);    Waiter w2 = new Waiter(monitor, 2);    w1.start();    w2.start();    try    {      Thread.sleep(250);      synchronized (monitor)      {	w1.interrupt();	monitor.notify();      }      w1.join();      w2.join();      System.out.println("join ok");      System.out.println("Thread 1 " +                          (w1.interrupted ? "interrupted ok" : "error"));      System.out.println("Thread 2 " +                         (w2.notified ? "notified ok" : "error"));    }    catch (InterruptedException x)    {      System.out.println (x);    }  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?