学习笔记5: java中Thread类中的interrupt()(补充)
学习笔记5: java中Thread类中的interrupt()(补充)
牧羊人Berg 发表于2年前
学习笔记5: java中Thread类中的interrupt()(补充)
  • 发表于 2年前
  • 阅读 51
  • 收藏 4
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

  1. 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();   // 吵醒学生
		}
	}
}




共有 人打赏支持
粉丝 25
博文 96
码字总数 87512
×
牧羊人Berg
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: