版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验7 多线程实验目的(1) 掌握Java多线程的概念和实现(2) 掌握使用继承Thread产生线程(3) 实现Runnable接口产生线程(4) 掌握wait-notify机制任务一:多线程输出字符串(继承Thread类)创建两个独立的线程,一个线程打印20次“A”,另一个线程打印20次“B”,输出结果类似于:ABBABAABBA./* 两个独立线程,分别输出A和B */要求:使用继承Thread类的方式实现线程对象代码如下:A.java:package first;public class A extends Threadpublic void run()for(int i=1;i<
2、=20;i+)System.out.print("A");B.java:package first;public class B extends Threadpublic void run()for(int i=1;i<=20;i+)System.out.print("B");Test.java:package first;public class test public static void main(String args) A a;B b;a = new A();b = new B();a.start();b.start();任务二:多个线
3、程共同执行目标对象的任务(实现Runnable)有一批零件(Part)的生产任务,总量是800个,生产一个零件耗时10ms。有4个车间(Workshop)共同完成这一批任务,分别统计每个车间各自生产了多少个零件并输出。代码如下:package second;public class Part public static void main(String args)Thread w1;Thread w2;Thread w3;Thread w4;Workspace ws;ws = new Workspace();w1 = new Thread(ws);w2 = new Thread(ws);w3
4、= new Thread(ws);w4 = new Thread(ws);w1.setName("WorkSpace1");w2.setName("WorkSpace2");w3.setName("WorkSpace3");w4.setName("WorkSpace4");w1.start();w2.start();w3.start();w4.start();tryThread.sleep(2500);catch(InterruptedException e) ws.print();class Workspace
5、implements Runnableint partamount = 800;int c1=0;int c2=0;int c3=0;int c4=0;public void run()while(true)String name = Thread.currentThread().getName();if(name.equals("WorkSpace1")change();c1=c1+1; if(name.equals("WorkSpace2")change();c2=c2+1;if(name.equals("WorkSpace3")
6、change();c3=c3+1;if(name.equals("WorkSpace4")change();c4=c4+1;tryThread.sleep(10);catch(InterruptedException e)if(partamount<=0)return;public void print()System.out.println("WorkSpace1:"+c1);System.out.println("WorkSpace2:"+c2);System.out.println("WorkSpace3:&qu
7、ot;+c3);System.out.println("WorkSpace4:"+c4);public synchronized void change()partamount = partamount -1;任务三:生产者-消费者问题(线程间通信)有一种商品Product类,一个货架类(GoodsShelf):拥有一个容量为size(可根据需要设定大小)的Product数组。生产者(Producer)往货架上放置商品,消费者(Consumer)从货架上消费商品。二者是并发执行的。(货架空的时候只能生产,货架满的时候只能消费。)使用多线程并发机制和线程间通信,模拟商品编号从
8、1到100的生产和消费过程。要求:(必做)只模拟一个生产者和一个消费者的情况;(选作)模拟2个生产者和3个消费者的情况,生产商品的时间和消费商品的时间可以调整Thread.sleep(整型值)。Product.java:package third;public class Product int amount;Product(int amount)this.amount = amount;public String toString()return "Product:"+amount;GoodsShelf.java:package third;public class Go
9、odsShelf int front = 0;Product p = new Product10;public synchronized void push(Product o)while(front = 10)trythis.wait();catch(InterruptedException e)System.out.println("Error:"+e);this.notify();pfront=o;this.front+;public synchronized Product p()while(front = 0)trythis.wait();catch(Interr
10、uptedException e)System.out.println("Error:"+e);this.notify();this.front-;return pfront;Product.java:package third;public class Producer implements RunnableGoodsShelf g =null;Producer(GoodsShelf g)this.g = g;Overridepublic void run() / TODO 自动生成的方法存根for(int i=0;i<100;i+)Product pt = new
11、 Product(i);g.push(pt);System.out.println("Produced "+pt);tryThread.sleep(10);catch(InterruptedException e)System.out.println("Error:"+e);Consumer.java:package third;public class Consumer implements RunnableGoodsShelf g = null;public Consumer(GoodsShelf g)super();this.g=g;Overridepublic void run() / TODO 自动生成的方法存根for(int i=0;i<100;i+)Product pt = g.pop();System.out.println("Consumed:"+pt);tryThread.sleep(100);catch(InterruptedException e)System.out.println("Error:"+e);Test.java:package third;public class test public static void main(String args
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐厅转让合同
- 黑龙江省哈尔滨市南岗区第三中学2026届高中毕业年级第三次质量预测化学试题含解析
- 2025~2026学年河北石家庄市桥西区度第一学期期末适应性练习
- 2026客运资格考试题及答案
- 2026纪检干部考试题目及答案
- 2026江苏苏州市第五人民医院招聘医疗辅助岗位工作人员2人备考题库有答案详解
- 2026山西吕梁离石区零工市场公益性岗位人员招聘5人备考题库有完整答案详解
- 2026广东中山市博爱小学教师招聘1人备考题库附答案详解(b卷)
- 2026上海青年报社招聘4人备考题库(第一批)及一套参考答案详解
- 2026湖南怀化麻阳苗族自治县卫健系统招聘事业单位工作人员72人备考题库完整答案详解
- 2025中国融通集团信息技术有限公司社会招聘笔试参考试题附答案解析
- 内外墙抹灰安全技术交底
- 混凝土拌合物试验课件
- 病理学实验室质控措施指南
- 2025年6月浙江省高考历史试卷真题(含答案解析)
- DB41∕T 2474-2023 梅花玉 鉴定与分类
- 《婴幼儿游戏活动实施》课程标准(五年制高职专科)
- 车载光通信专题学习
- 《球墨铸铁可调式防沉降检查井盖安装及维护技术规程》
- 四级手术术前多学科讨论制度(2025年)
- 2025年贵州贵阳事业单位招聘考试卫生类医学检验专业知识试卷
评论
0/150
提交评论