⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thread_interrupt.java

📁 linux下编程用 编译软件
💻 JAVA
字号:
// Test interrupt() behaviour on a thread in wait(), sleep(), and spinning // in a loop.class ThreadBase extends Thread{  boolean ready = false;    synchronized void ready()  {    ready = true;  }}class Waiter extends ThreadBase{  public synchronized void run()  {    super.ready();    System.out.println ("wait()");    try    {      wait();      System.out.println("Error: wait() completed normally.");    }    catch (InterruptedException x)    {      if (isInterrupted() || interrupted())         System.out.println("Error: interrupt flag is still set.");        }      System.out.println("interrupted - ok");  }}class Sleeper extends ThreadBase{  public void run()  {    super.ready();    System.out.println ("sleep()");    try    {      sleep(5000);      System.out.println("Error: sleep() completed normally.");    }    catch (InterruptedException x)    {      if (isInterrupted() || interrupted())         System.out.println("Error: interrupt flag is still set.");          System.out.println("interrupted - ok");    }  }}class Looper extends ThreadBase{  public void run()  {    super.ready();    System.out.println ("Busy waiting");    int count = 0;    long start = System.currentTimeMillis();    while (true)      {        Thread.yield();	if (isInterrupted ())	  break;	long now = System.currentTimeMillis();		if ((now - start) > 5000)	  break;      }    synchronized (this)    {        if (interrupted ())	{	  System.out.println ("interrupted - ok");	  if (isInterrupted () || interrupted ())	    System.out.println("Error: interrupt flag is still set.");	}      else	System.out.println ("Error: Busy wait was not interrupted.");              }  }}class Joiner extends ThreadBase{  public void run()  {    super.ready();    System.out.println("join()");    try    {      join(2000);      System.out.println("Error: join() completed normally??!");    }    catch (InterruptedException x)    {      if (isInterrupted() || interrupted())         System.out.println("Error: interrupt flag is still set.");          System.out.println("interrupted - ok");    }  }}public class Thread_Interrupt{  public static void main(String args[])  {    Waiter w = new Waiter();    w.start ();    sleep_and_interrupt (w);        Sleeper s = new Sleeper();    s.start ();    sleep_and_interrupt (s);    Looper l = new Looper ();    l.start ();    sleep_and_interrupt (l);    Joiner j = new Joiner ();    j.start ();    sleep_and_interrupt (j);  }    public static void sleep_and_interrupt(ThreadBase t)  {    try    {      synchronized (t)        {	  while (!t.ready)	    t.wait(10);	}          Thread.sleep (50);      t.interrupt ();      long t1 = System.currentTimeMillis();      t.join (5000);      long time = System.currentTimeMillis() - t1;      if (time > 2900)        {	  System.out.println ("Error: join() from main thread timed out");	}    }    catch (InterruptedException x)    {      System.out.println("Error: main thread interrupted.");    }  }}

⌨️ 快捷键说明

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