使用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 晚相关推荐

  1. 前端面试每日3+1(周汇总2019.06.02)

    周汇总 2019.06.02 <论语>,曾子曰:"吾日三省吾身"(我每天多次反省自己). 前端面试每日3+1题,以面试题来驱动学习,每天进步一点! 让努力成为一种习惯, ...

  2. 《惢客创业日记》2019.06.02(周日)《惢客》021 目前的市场现状是什么样的?(十二)

    今天是星期日,也是<惢客>有声书的分享日,继续分享我录制的<惢客>有声书第二十一集<目前的市场现状是什么样的?(十二)> 各位关注<惢客>有声书的小伙伴 ...

  3. paper survey(2019.06.11)——卷积网络高阶特征表示

    类似于博文< paper survey(2019.06.05)--卷积网络feature map的传递与利用> 本博文也是系列论文的阅读笔记(基本都是CVPR和ICCV的论文). 对于跟本 ...

  4. 2021.06.02会解方程的计算器

    2021.06.02会解方程的计算器 (题目来源:) 题目描述 为了很好的完成这个任务,ZL先生首先研究了一些一元一次方程的实例: 4+3x=8 6a-5+1=2-2a -5+12y=0 ZL先生被主 ...

  5. 2021.06.02税收和补贴问题

    2021.06.02税收和补贴问题 (题目来源:洛谷-P1023) 题目描述 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位 ...

  6. java web开发学习手册_【Java手册】Java开发手册_华山版(2019.06)

    版本号:1.5.0 更新日期:2019.06.19 制定团队:阿里巴巴与Java社区开发者 更新亮点:华山版,新增21条设计规约,修改描述112处,完善若干处示例 2017年春天,<阿里巴巴Ja ...

  7. AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(二)

    AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(二) 导读      讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...

  8. AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(一)

    AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(一) 导读      讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...

  9. 2019央视春晚公布主持阵容 语言类节目将有突破

    中新网北京1月31日电 (记者 高凯)1月31日,中国中央广播电视总台在北京召开2019年春晚新闻发布会,宣布康辉.朱迅.任鲁豫.李思思.尼格买提将担任北京主会场主持人. 据悉,今年春晚将一如既往地将 ...

最新文章

  1. [转贴]NIOS II 软核中EPCS配置芯片的存储操作
  2. linux查看python环境变量_Linux中的Python环境变量
  3. ArcGIS中的三种查询
  4. linux rpc语言,Linux下RPC的hello world
  5. c语言数据储存系统,编的学生成绩管理系统 从文件中读取保存数据总会多读入一组乱码数据...
  6. IIS报错,App_global.asax.×××.dll拒绝访问
  7. docker安装(linux)
  8. hibernate session的load和get方法
  9. [svc]jdk+tomcat部署.jforum论坛部署
  10. 用limit 实现java的简单分页
  11. python鼠标移动轨迹_鼠标的另一种选择,肯辛通轨迹球能否改变固有的使用习惯?...
  12. centos7 安装nginx
  13. 动态RAM的集中刷新、分散刷新、异步刷新
  14. hexbin_Power BI Desktop中的Hexbin散点图
  15. oracle 查看锁表情况及数据库连接情况
  16. python用于标识类方法的是_Python类的设计与使用
  17. python不显示warnings
  18. Redis数据结构之SDS
  19. CentOS防火墙配置(资源)
  20. mysql冒号_mysql语句中的冒号是什么意思?

热门文章

  1. Excel操作:导出到Excel并下载到web客户端
  2. unix下网络编程之I/O复用(二)
  3. 关于jQuery获取Action返回的JSON数据 项目真实案例 记录(Struts2)
  4. UA OPTI512R 傅立叶光学导论22 透镜成像与傅立叶变换
  5. Bing地图REST服务
  6. 第一个Node.js实例
  7. 架构设计之「服务限流」
  8. 洛谷P1667/[10.22 模拟赛] 数列 (思维+模拟)
  9. 我们为什么要尝试前后端分离
  10. CSS样式表初始化代码