写了一个小闹钟
2015-06-03 12:11
351 查看
package com.konghao.test; public class Alarm implements Runnable { private boolean isWork; //闹钟是否开启 public Alarm() { super(); this.isWork = false; //没在响; } public boolean isWork() { return isWork; } public void setWork(boolean isWork) { this.isWork = isWork; } //闹方法 public void work(){ synchronized (this) { //闹钟运行时,打印字符 if(isWork){ System.out.println("it's time for up!"); this.notify(); try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } }else{ try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } @Override public void run() { for (int i = 0; i < 10; i++) { this.setWork(true); work(); } } } package com.konghao.test; public class User implements Runnable{ private String name; private Alarm myAlarm; public User(String name, Alarm myAlarm) { super(); this.name = name; this.myAlarm = myAlarm; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Alarm getMyAlarm() { return myAlarm; } public void setMyAlarm(Alarm myAlarm) { this.myAlarm = myAlarm; } public void stopAlarm(){ synchronized (myAlarm) { if(myAlarm.isWork()){ myAlarm.setWork(false); System.out.println(this.name+"按了闹钟!"); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } finally{ myAlarm.notify(); try { myAlarm.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } }else{ try { myAlarm.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } @Override public void run() { while(true){ stopAlarm(); } } } package com.konghao.test; public class Test { public static void main(String[] args) { Alarm al = new Alarm(); User u = new User("小胖",al); Thread ut = new Thread(u); Thread at = new Thread(al); ut.setDaemon(true); ut.start(); at.start(); } }
相关文章推荐
- 让自家系统瘫痪,这事我也干过
- CentOS下crontab 执行失败的原因有哪些?
- 升级到mac 10.10之后使用pod出现问题的解决方法
- 微软100题(66)用递归颠倒栈
- Java for LeetCode 136 Single Number
- 在网页中插入视频代码大全
- Page rank
- 网络编程之shutdown() 与 close()函数详解
- 下了个蓝屏代码查看工具,就中病毒了。。。什么鬼病毒,竟然还是用的VBS
- Spring整合Hibernate的时候使用hibernate.cfg.xml
- UIKit--UIAlertController
- Android Service详解
- mac中遇到的mysql编码问题
- iWatch 页面导航
- Unity Rigidbody
- jQuery中extend()和fn.extend()方法详解
- JavaScript - implement page lazy loading via mouse scrolling
- Program Pack
- 在Linux下搭建Tiny开发环境
- glBlendFunc函数