唤醒实验(java
package sy;
import java.util.Random;
public class random
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
ROOM room = new ROOM();
room.student1.start();
room.student2.start();
room.teacher.start();
}
}
class ROOM implements Runnable
{
Thread teacher, student1, student2;
ROOM()
{
teacher = new Thread(this);
student1 = new Thread(this);
student2 = new Thread(this);
teacher.setName("王校长");
student1.setName("Theshy");
student2.setName("Rookie");
}
@Override
public void run() {
// TODO Auto-generated method stub
if (Thread.currentThread() == student1)
{
try
{
System.out.println(student1.getName() + "想睡20分钟");
Thread.sleep(1000 * 20 * 60);
}catch (InterruptedException e)
{
System.out.println(student1.getName() + "被老师叫醒了4次.");
}
System.out.println(student1.getName() + "开始唤醒Rookie");
System.out.println(student1.getName() + "兄弟你醒一醒!!!");
student2.interrupt();//吵醒2
// System.out.println(student2.getName() + "被Theshy叫醒...");
}
else if (Thread.currentThread() == teacher)
{
for (int i = 1; i <= 4; i++)
{
System.out.println("上课!");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
}
}
student1.interrupt(); // 吵醒student
}
else if (Thread.currentThread() == student2)
{
try
{
System.out.println(student2.getName() + "想睡1小时");
Thread.sleep(1000 * 60 * 60);
}catch (InterruptedException e)
{
System.out.println(student2.getName() + "被Theshy叫醒了");
}
//System.out.println(student2.getName() + "被Theshy叫醒...");
}
}
}
package sy; public class buytickets
{ public static void main(String[] args)
{
// TODO Auto-generated method stub
ROOM room = new ROOM();
room.p1.start();
room.p2.start();
room.p3.start();
room.shoper.start();
} }
class ROOM implements Runnable
{
Thread p1, p2, p3, shoper; ROOM()
{
p1 = new Thread(this);
p2 = new Thread(this);
p3 = new Thread(this);
shoper = new Thread(this);
shoper.setName("售票员");
p1.setName("张三");
p2.setName("李四");
p3.setName("王五");
} @Override
public void run()
{
// TODO Auto-generated method stub
if (Thread.currentThread() == shoper)
{
try
{
System.out.println("售货员营业");
Thread.sleep(1000 * 60 * 60);
}
catch (InterruptedException e)
{
System.out.println(shoper.getName() + "结束");
}
}
else if(Thread.currentThread() == p1)
{
try
{
System.out.println("张三需要等待");
Thread.sleep(1000 * 60 * 60);
}catch (InterruptedException e)
{
System.out.println(p1.getName() + "拿到票和40元找零");
}
p3.interrupt();
}
else if(Thread.currentThread() == p2)
{
System.out.println(p2.getName()+"拿到票和得到找零10");
p1.interrupt();
}
else if(Thread.currentThread() == p3)
{
try{
System.out.println("王五拿到票");
Thread.sleep(1000 * 60 * 60);
}
catch (InterruptedException e)
{
System.out.println("售货员无票,手中有50+10元");
}
shoper.interrupt();
}
} private void notify(Thread p12) {
// TODO Auto-generated method stub }
}
唤醒实验(java的更多相关文章
- java的第二个实验——JAVA面向对象程序设计
java的第二个实验——JAVA面向对象程序设计 北京电子科技学院 实 验 报 告 课程:Java程序设计 班级:1352 姓名:林涵锦 学号:20135213 成绩: ...
- 20155323刘威良第二次实验 Java面向对象程序设计
20155323刘威良第二次实验 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 ...
- 20155323刘威良第一次实验 Java开发环境的熟悉(Linux + IDEA)
20155323刘威良第一次实验 Java开发环境的熟悉(Linux + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序 ...
- 对SIGQUIT的实验 & Java dump
写了一个Java程序,sleep 20秒. package com.company; public class Main { public static void main(String[] args ...
- 实验----Java的二维数组的应用及杨辉三角的编写
(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...
- 线程间通信(等待,唤醒)&Java中sleep()和wait()比较
1.什么是线程间通信? 多个线程在处理同一资源,但是任务却不同. 生活中栗子:有一堆煤,有2辆车往里面送煤,有2辆车往外拉煤,这个煤就是同一资源,送煤和拉煤就是任务不同. 2.等待/唤醒机制. 涉及的 ...
- (stm32f103学习总结)—待机唤醒实验
一.STM32待机模式介绍 1.1 STM32低功耗模式介绍 很多单片机具有低功耗模式,比如MSP430.STM8L等,我们的STM32 也不例外.默认情况下,系统复位或上电复位后,微控制器进入运行模 ...
- JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制
JAVA之旅(十四)--静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 JAVA之旅,一路有你,加油! 一.静态同步函数的锁是clas ...
- Java实验链接
第1次实验 课堂实验内容:Java入门+Eclipse+PTA+Git+博客 实验任务书:第01次试验(安装JDK.编辑器.编写出第一个Java程序).pdf Eclipse简明教程(by郑如滨).p ...
随机推荐
- 200. Number of Islands(DFS)
Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surro ...
- Cloud-init
cloud-init用于在创建虚拟机时通过元数据服务对虚拟机基本配置,包括常见的主机名,用户,密码等等.同时用户可以通过user_data自定义一些数据对虚拟机进行配置,可以有配置文件cloud-co ...
- Java并发——Fork/Join框架与ForkJoinPool
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/4631466. ...
- bzoj2880
打公式好麻烦 QAQ 为了节省时间去复习,原谅我引用一下别人的博客...http://blog.csdn.net/acdreamers/article/details/8542292 #include ...
- 怎么让table中的<td>内容向上对齐
<td valign="top"></td>
- 关于ashrpt中行源的CPU + Wait for CPU事件深入解读
该等待事件并不包含在等待事件范围,而是出现在ash的具体行源中,如下: 标注语句的每次执行大约1小时,如下awr所示: 该sql语句的最后一层Insert如下: insert into ta_tf l ...
- 修改mongodb(带仲裁节点的副本集)各机器端口
需求:因为端口调整,需要改变副本的备份集 1.查看当前的副本集信息 [root@localhost bin]# ./mongo 192.168.1.134:10001 repltest:PRIMARY ...
- IIS 设备未就绪。
看看Web.config 是否指向的磁盘在本机上不存在此磁盘
- JavaScript闭包函数&箭头函数调用与执行
一.标准的闭包函数 //一.标准的闭包函数 function A() { var i=0; ++i; console.log('i : ' + i); return function b() { re ...
- MyBatis mapper parameterType
1. 传入简单类型 JAVA代码: public User get(Long id) { return (User) getSqlSession().selectOne("com.liu ...