栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 笔试题库

[问答题] 简单应用题请完成下列Java程序:运行3个线程,每一个线程有自己的标志,用a,b,c表示,每个线程显示一个"Start"信息和一个"End"信息并且

笔试题库 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[问答题] 简单应用题请完成下列Java程序:运行3个线程,每一个线程有自己的标志,用a,b,c表示,每个线程显示一个"Start"信息和一个"End"信息并且

[问答题] 简单应用题请完成下列Java程序:运行3个线程,每一个线程有自己的标志,用a,b,c表示,每个线程显示一个"Start"信息和一个"End"信息并且间隔地显示2个"Loop"信息(间隔变化为(0.5~2)秒之间的随机延迟)。程序运行结果如下:(注:由于时间间隔为随机数,所以,运行结果的顺序不惟一)a Startb Startc Startb Loopa Loopb Loopb Endc Loopa Loopa Endc Loopc End注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。public class ex2_2 implements Runnable { static char flag2_2 = ’’a’’; public static void main(String[] arg) { ex2_2 obj2_2 = new ex2_2(); Thread thread2_2 = new Thread(obj2_2); thread2_2.start(); thread2_2 = new Thread(obj2_2); thread2_2.start(); thread2_2 = new Thread(obj2_2); thread2_2.start(); } public void run() { char myflag2_2; synchronized(this) { ; } System.out.println(myflag2_2 + " Start");for(int i=0; i<2; i++) { try {Thread.sleep(rand(500,2000));System.out.println(myflag2_2 + " Loop"); } catch(InterruptedException ie) {System.out.println(ie); } } System.out.println(myflag2_2 + " End"); } final private int rand(int low,int hig

正确答案:

myflag2_2 = flag2_2++((int)((high-low+1)*(Math.random()))) + low

参考解析:

本题主要考查线程的创建与同步和控制随机数产生范围的算法。解题关键是,熟悉线程的概念和使用,线程的同步控制,char类型数据的操作,以及熟悉随机数产生的方法Math.random(),并且能够进一步根据需要控制随机数产生的范围。在本题中,main()方法中创建3个线程,这3个线程使用obj2_2对象。线程调用start()方法来中断,使一个新的线程开始执行,并且调用run()方法。第1空,run()方法为自己设置一个线程的标志,并为下一个线程的使用增加这个标志值,由于此时线程正在处理中,因此在同步块中完成修改标志的语句放在同步块中。第2个空,通过low和high两个参数,控制产生随机数的范围,将基本的数学思想应用于程序设计中。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/480991.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号