logo - 刷刷题
下载APP
【简答题】

案例5-10多线程通信 一、案例描述 1、考核知识点 编 号:00105015 名 称:多线程通信 2、练习目标 掌握如何解决线程通信中的共享资源的安全问题 3、需求分析 一条生产线的上下两个工序,它们必须以规定的速率完成各自的工作,才能保证产品在流水线中顺利的流转。在多线程的程序中,上下工序可以看作两个线程,这两个线程之间需要协同完成工作,就需要线程之间进行通信。了让初学者掌握多线程通信,案例中将通过生产和消费鼠标这两个过程的多线程协调来演示。 4、设计思路(实现原理) 1)创建一个产品类Product,该类有三个属性分别是:产品名称name,产品数量count,和一个boolean类型的标示量flag。当flag值为false时,说明产品未生产,当flag值为true时,说明产品已生产。 2)在Product类中编写一个同步方法set(),每次调用set()方法时,表示要生成一个产品。在set()方法中,编写一个while循环,当flag值为true时,调用该线程的wait()方法,让线程等待。在while循环体外,count值递增,并打印当前线程名称和产品名称及数量,最后将flag值设为true,并唤醒所有的线程。 3)在Product类中编写一个同步方法get(),每次调用get()方法时,表示要消费一件产品。在get()方法中,编写一个while循环,当flag值为false时,调用该线程的wait()方法,让线程等待。在循环体外,打印当前线程名称和被消费的产品名称和个数。最后将flag值设为false,并唤醒所有的线程。 4)编写一个生产类Producter,该类定义了一个Product类型的成员变量和有参构造方法,构造方法中的参数用于为Product对象赋值,并且Producter类实现了Runnable接口。 5)重写Runnbale接口的run()方法,在run()方法内,执行死循环,每循环一次调用Product对象的set()方法。 6)编写一个消费类Customer,该类定义了一个Product类型的成员变量和有参构造方法,构造方法中的参数用于为Product对象赋值,并且Customer类实现了Runnable接口。 7)重写Runnable接口的run()方法,在run()方法内,执行死循环,每循环一次就调用producet对象的get()方法。 8)编写一个测试类Example10,创建一个Product对象,生产者和消费者分别利用product对象创建各自的对象,最后使用Thread类创建2个“生产者”线程和2个“消费者”线程,并执行四个线程的start()方法。

举报
参考答案:
参考解析:
.
刷刷题刷刷变学霸
举一反三

【单选题】下列复选框构造方法,错误的是 ( )

A.
setLayout(new GridLayout(3,1));
B.
add(new Checkbox('one',null,true));
C.
add(new Checkbox('two'));
D.
add(new Checkbox('one',true));

【单选题】FDDI规定了一种很特殊的定时和同步方法,即( )。

A.
曼彻斯特编码
B.
差分曼彻斯特编码
C.
4B/5E编码
D.
以上都不对

【多选题】需求分析的任务包括哪些()?

A.
完整性约束
B.
了解原系统工作概况
C.
明确用户的各种需求
D.
确定新系统的功能

【单选题】类的构造方法如果有多余1个的形参,那么实参在( )位置给出。

A.
定义对象时,类名称后面的小括号中给出
B.
对象定义完成后,再给出

【单选题】下面不属于需求分析阶段工作的是()。

A.
可行性研究
B.
需求获取
C.
需求分析
D.
撰写软件需求规格说明书