interrupt():
该方法经常用来“吵醒休眠的线程“。 当一些线程调用sleep() 方法处于休眠状态时,一个占有CPU资源的线程可以让休眠的线程调用interrupt()方法“吵醒”自己。即导致休眠的线程发火说呢过InterruptException异常,从而结束休眠,重新排队等待CPU资源。
附代码:
public class TestDemo { /** * @author 牧羊的伯格女皇 * @param args * 2015-10-16 */ public static void main(String[] args) { ClassRoom cr = new ClassRoom(); cr.student.start(); cr.teacher.start(); } } public class ClassRoom implements Runnable { Thread student; Thread teacher; // 教师里有 student和teacher两个线程 ClassRoom(){ student = new Thread(this); teacher = new Thread(this); student.setName("牧羊的伯格女皇"); teacher.setName("某某某教授"); } public void run(){ if(Thread.currentThread() == student ){ try{ System.out.println(student.getName() + " 正在睡觉,没有听课。"); Thread.sleep(1000*60*60); // 学生打算休眠一小时 }catch(InterruptedException e){ System.out.println(student.getName() + " 被教授给叫醒了... "); } System.out.println(student.getName() + " 开始认真听课。 "); }else if( Thread.currentThread() == teacher ){ for( int i=1;i<=3; i++){ System.out.println("上课 " + i); try{ Thread.sleep(500); }catch(InterruptedException e){ } } student.interrupt(); // 吵醒学生 } } }
学习笔记5: java中Thread类中的interrupt()(补充)
原文:http://my.oschina.net/u/2405367/blog/518116