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的更多相关文章

  1. java的第二个实验——JAVA面向对象程序设计

    java的第二个实验——JAVA面向对象程序设计 北京电子科技学院 实     验    报     告 课程:Java程序设计 班级:1352 姓名:林涵锦 学号:20135213 成绩:      ...

  2. 20155323刘威良第二次实验 Java面向对象程序设计

    20155323刘威良第二次实验 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 ...

  3. 20155323刘威良第一次实验 Java开发环境的熟悉(Linux + IDEA)

    20155323刘威良第一次实验 Java开发环境的熟悉(Linux + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序 ...

  4. 对SIGQUIT的实验 & Java dump

    写了一个Java程序,sleep 20秒. package com.company; public class Main { public static void main(String[] args ...

  5. 实验----Java的二维数组的应用及杨辉三角的编写

    (1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...

  6. 线程间通信(等待,唤醒)&Java中sleep()和wait()比较

    1.什么是线程间通信? 多个线程在处理同一资源,但是任务却不同. 生活中栗子:有一堆煤,有2辆车往里面送煤,有2辆车往外拉煤,这个煤就是同一资源,送煤和拉煤就是任务不同. 2.等待/唤醒机制. 涉及的 ...

  7. (stm32f103学习总结)—待机唤醒实验

    一.STM32待机模式介绍 1.1 STM32低功耗模式介绍 很多单片机具有低功耗模式,比如MSP430.STM8L等,我们的STM32 也不例外.默认情况下,系统复位或上电复位后,微控制器进入运行模 ...

  8. JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制

    JAVA之旅(十四)--静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 JAVA之旅,一路有你,加油! 一.静态同步函数的锁是clas ...

  9. Java实验链接

    第1次实验 课堂实验内容:Java入门+Eclipse+PTA+Git+博客 实验任务书:第01次试验(安装JDK.编辑器.编写出第一个Java程序).pdf Eclipse简明教程(by郑如滨).p ...

随机推荐

  1. debug调试命令

  2. Kali密码攻击之——离线攻击工具

    在线密码攻击在渗透测试中很重要,但对于测试过程中得到的哈希,加密数据,又需要离线破解工具辅助解决 Creddump套件 kali下离线攻击工具中的Cache-dump,lsadump,pwdump,均 ...

  3. 小程序canvas生成海报保存至手机相册

    小程序canvas画图保存至手机相册 (1)可直接展示生成的海报 .因手机分辨率不同可能导致生成的海报会有细微差别,这里隐藏canvas海报,页面正常设置海报样式保存时保存隐藏的canvas海报 (2 ...

  4. Web_Toy

    1 2 3 4 1.App录音 var r = plus.audio.getRecorder() # 创建录音对象 r.record({filename:"_doc/audio/" ...

  5. 专题8:javascript中事件

    一.事件流 1.1 事件冒泡 冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标的顺序逐一触发: 注意:各个浏览器在处理<html>标记级别的事件时顺序有出入,因此无论任何情况,都 ...

  6. 第七节 DOM操作应用-高级

    表格应用: 获取:tBodies.tHead.tFoot.rows.cells <!DOCTYPE html> <html lang="en"> <h ...

  7. mongodb主从(副本集附仲裁节点)部署带认证模式

    环境:OS:CentOS 7DB:3.0.15机器角色:192.168.1.134:10001 主192.168.1.135:10002 从192.168.1.135:10003 仲裁节点 1.下载相 ...

  8. opencv学习之路(23)、轮廓查找与绘制(二)——访问轮廓每个点

    一.简介 二.画出每个轮廓的每个点 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat src= ...

  9. 剑指offer(53)表示数值的字符串

    题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...

  10. Idea搭建servlet开发过程

    Idea搭建servlet开发过程 https://www.cnblogs.com/javabg/p/7976977.html (1)    安装idea,jdk,tomcat:设置好环境变量: (2 ...