java线程作业1
来源:互联网 发布:淘宝网集市消保卖家 编辑:程序博客网 时间:2024/06/08 16:47
编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出每次通过山洞的人名。提示:利用线程同步机制,过山洞用一条输出语句表示,该输出语句打印输出当前过山洞的人名,每个人过山洞对应一个线程,哪个线程执行这条输出语句,就表示哪个人过山洞
test1.java
package threadcour;public class test1 { static Object clock=new Object(); public static void main(String[] args) { Tunner tunner=new Tunner(clock); for(int i=0;i<10;i++){ new Thread(tunner,""+Math.random()*100).start(); } System.out.println("所有的人都已经到达山洞"); }}class Tunner implements Runnable{ private Object clock; public Tunner(Object clock2) { this.clock=clock2; // TODO Auto-generated constructor stub } @Override public void run() { // TODO Auto-generated method stub synchronized (clock) { System.out.println(Thread.currentThread().getName()+"正在过山洞"); try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"过完了"); } }}
运行结果:
28.23883774537356正在过山洞所有的人都已经到达山洞28.23883774537356过完了73.64517223481191正在过山洞73.64517223481191过完了0.9075187969981302正在过山洞0.9075187969981302过完了46.94706784163314正在过山洞46.94706784163314过完了36.45865380789073正在过山洞36.45865380789073过完了11.617979590450577正在过山洞11.617979590450577过完了27.096233959190464正在过山洞27.096233959190464过完了67.15721000515788正在过山洞67.15721000515788过完了42.08747211807798正在过山洞42.08747211807798过完了52.03257164210905正在过山洞52.03257164210905过完了
总结:
这里为了控制他们,使用static变量来限制并发数量,一个一个的过洞
阅读全文
0 0
- java线程作业1
- java线程作业1
- Java作业线程-6
- java 线程作业2
- java 线程作业2
- 第十五周Java作业--线程
- 第十五周Java作业-1线程同步机制
- 线程作业
- java 作业1
- Java作业1
- Java作业1
- [Java] 作业1答疑
- Java .作业1
- Java作业1
- Java作业1
- java作业1
- Java作业1类
- JAVA作业11-1
- 图像亮度、对比度 算法--cg
- Kotlin与Java的共存-kotlin调用java代码
- 实现顺序查找的算法
- Retrofit + RxJava+RxAndroid
- Python小练习(2)
- java线程作业1
- mysql replace into
- 微信JS-SDK调用微信接口方法说明
- 操作系统基础训练十问十答
- Qt移植以及QT creator一键调试
- 1061. 判断题(15)
- 简单工厂设计模式
- 解析JSON字符串
- angular.js 购物车