多线程题目 2019.06.02 晚
使用Thread类创建两个模拟猫和狗的线程,猫和狗共享房屋中的一桶水,即房屋是线程的目标对象,房屋中的一桶水被猫和狗共享。猫和狗轮流喝水(狗喝的多,猫喝的少),当水被喝尽时,猫和狗进入死亡状态。猫或狗在轮流喝水的过程中,主动休息片刻(让Thread类调用sleep(int n)进入中断状态),而不是等到被强制中断喝水.
代码实现:(测试类有点看不懂)
多线程例题一
House类:
public class House implements Runnable {int waterAmount; //用int变量模拟水量public void setWater(int w) {waterAmount = w;}public void run() { while(true) {String name=Thread.currentThread().getName();if(name.equals("狗")) { System.out.println(name+"喝水") ; waterAmount=waterAmount-2; //狗喝的多 }else if(name.equals("猫")){System.out.println(name+"喝水") ; waterAmount=waterAmount-1; //猫喝的少 }System.out.println(" 剩 "+waterAmount);try{ Thread.sleep(2000); //间隔时间 }catch(InterruptedException e){} if(waterAmount<=0) {return; } }} }
Test类:
public class Test{public static void main(String args[ ]) {House house = new House();house.setWater(10);Thread dog,cat;dog=new Thread(house); cat=new Thread(house); //cat和dog的目标对象相同 dog.setName("狗");cat.setName("猫"); dog.start();cat.start();} }
多线程例题二
一个线程每隔1秒钟在命令行窗口输出本地机器的时间,在3秒钟后,该线程又被分配了实体,新实体又开始运行。因为垃圾实体仍然在工作,因此,在命令行每秒钟能看见两行同样的本地机器时间.
代码实现:
Clock类:
import java.util.Date; import java.text.SimpleDateFormat; public class Clock implements Runnable{int time=0;SimpleDateFormat m=new SimpleDateFormat("hh:mm:ss");Date date;public void run() {while(true) {date=new Date();System.out.println(m.format(date));time++;try {Thread.sleep(2000);}catch(InterruptedException e) {}if(time==3) {Thread thread=Thread.currentThread();thread=new Thread(this);thread.start();}}}}
Test类:
public class Test{public static void main(String[] args) {Clock clock=new Clock();Thread homeTime=new Thread(clock);homeTime.start();} }
多线程例题三
有两个线程:student和teacher,其中student准备睡一小时后再开始上课,teacher在输出3句“上课”后,吵醒休眠的线程student。
运行效果如图:
代码实现:
ClassRoom类:
public class ClassRoom implements Runnable{Thread student,teacher;ClassRoom(){student=new Thread(this);teacher=new Thread(this);teacher.setName("王教授");student.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=0;i<3;i++) {System.out.println("上课!");try {Thread.sleep(500);}catch(InterruptedException e) {}}student.interrupt(); //吵醒学生 }}}
Test类:
public class Test{public static void main(String[] args) {ClassRoom s=new ClassRoom();s.student.start();s.teacher.start();} }
转载于:https://www.cnblogs.com/jianqiao123/p/10965039.html
多线程题目 2019.06.02 晚相关推荐
- 前端面试每日3+1(周汇总2019.06.02)
周汇总 2019.06.02 <论语>,曾子曰:"吾日三省吾身"(我每天多次反省自己). 前端面试每日3+1题,以面试题来驱动学习,每天进步一点! 让努力成为一种习惯, ...
- 《惢客创业日记》2019.06.02(周日)《惢客》021 目前的市场现状是什么样的?(十二)
今天是星期日,也是<惢客>有声书的分享日,继续分享我录制的<惢客>有声书第二十一集<目前的市场现状是什么样的?(十二)> 各位关注<惢客>有声书的小伙伴 ...
- paper survey(2019.06.11)——卷积网络高阶特征表示
类似于博文< paper survey(2019.06.05)--卷积网络feature map的传递与利用> 本博文也是系列论文的阅读笔记(基本都是CVPR和ICCV的论文). 对于跟本 ...
- 2021.06.02会解方程的计算器
2021.06.02会解方程的计算器 (题目来源:) 题目描述 为了很好的完成这个任务,ZL先生首先研究了一些一元一次方程的实例: 4+3x=8 6a-5+1=2-2a -5+12y=0 ZL先生被主 ...
- 2021.06.02税收和补贴问题
2021.06.02税收和补贴问题 (题目来源:洛谷-P1023) 题目描述 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位 ...
- java web开发学习手册_【Java手册】Java开发手册_华山版(2019.06)
版本号:1.5.0 更新日期:2019.06.19 制定团队:阿里巴巴与Java社区开发者 更新亮点:华山版,新增21条设计规约,修改描述112处,完善若干处示例 2017年春天,<阿里巴巴Ja ...
- AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(二)
AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(二) 导读 讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...
- AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(一)
AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(一) 导读 讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...
- 2019央视春晚公布主持阵容 语言类节目将有突破
中新网北京1月31日电 (记者 高凯)1月31日,中国中央广播电视总台在北京召开2019年春晚新闻发布会,宣布康辉.朱迅.任鲁豫.李思思.尼格买提将担任北京主会场主持人. 据悉,今年春晚将一如既往地将 ...
最新文章
- [转贴]NIOS II 软核中EPCS配置芯片的存储操作
- linux查看python环境变量_Linux中的Python环境变量
- ArcGIS中的三种查询
- linux rpc语言,Linux下RPC的hello world
- c语言数据储存系统,编的学生成绩管理系统 从文件中读取保存数据总会多读入一组乱码数据...
- IIS报错,App_global.asax.×××.dll拒绝访问
- docker安装(linux)
- hibernate session的load和get方法
- [svc]jdk+tomcat部署.jforum论坛部署
- 用limit 实现java的简单分页
- python鼠标移动轨迹_鼠标的另一种选择,肯辛通轨迹球能否改变固有的使用习惯?...
- centos7 安装nginx
- 动态RAM的集中刷新、分散刷新、异步刷新
- hexbin_Power BI Desktop中的Hexbin散点图
- oracle 查看锁表情况及数据库连接情况
- python用于标识类方法的是_Python类的设计与使用
- python不显示warnings
- Redis数据结构之SDS
- CentOS防火墙配置(资源)
- mysql冒号_mysql语句中的冒号是什么意思?