首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
去哪招聘
2017-07-27 16:30
已编辑
哈尔滨理工大学 Java
关注
已关注
取消关注
线程笔试题java 跪求代码思路
一个线程A以随机的间隔[0-20ms]产生k个随机数到一块内存区a (k也是随机生成的[100-200])。线程B,C每次以随机的时间间隔[0-50ms]获取内存区a的数据。B,C将获取的数据X,生成X+1。 并将X,X+1这两个数分别以随机的时间间隔[0-100ms]放入到内存区b. 线程D获取内存区b的数据并打印出来。D线程打印的数据中X与X+1必须在一起打印。当D线程打印出最后一个数字后。 输出一下打印的个数,并退出整个程序。
提示
全部评论
推荐
最新
楼层
牛客1401071号
电子科技大学 Java
不知道符不符合你的要求 public class Test { public static void main(String[] args){ BlockingQueue<Integer> que1 = new LinkedBlockingQueue<>(); BlockingQueue<MyNumber> que2 = new LinkedBlockingQueue<>(); ProducerTask A =new ProducerTask(que1); ConsumerIntegerProduceMyNumber B =new ConsumerIntegerProduceMyNumber(que1,que2); ConsumerIntegerProduceMyNumber C =new ConsumerIntegerProduceMyNumber(que1,que2); ProduceMyNumber D = new ProduceMyNumber(que2); ExecutorService executor = Executors.newFixedThreadPool(4); executor.execute(A); executor.execute(B); executor.execute(C); executor.execute(D); executor.shutdown(); try { executor.awaitTermination(Long.MAX_VALUE,TimeUnit.HOURS); } catch (InterruptedException e) { e.printStackTrace(); } } } class MyNumber{ public Integer num; public boolean isBig; public MyNumber(Integer num,boolean isBig){ this.num = num; this.isBig = isBig; } } class ProducerTask implements Runnable{ private BlockingQueue<Integer> que1; public ProducerTask(BlockingQueue<Integer> que1){ this.que1 = que1; }
@Override
public void run() { Random r =new Random(); int k = r.nextInt(100)+100; System.out.println(k); while(k-->0){ int time =r.nextInt(20); try { Thread.sleep(time); que1.put(r.nextInt(Integer.MAX_VALUE)); } catch (InterruptedException e) { e.printStackTrace(); } } try { que1.put(-1); que1.put(-1); } catch (InterruptedException e) { e.printStackTrace(); } } } class ConsumerIntegerProduceMyNumber implements Runnable{ private BlockingQueue<Integer> que1; private BlockingQueue<MyNumber> que2; public ConsumerIntegerProduceMyNumber(BlockingQueue<Integer> que1, BlockingQueue<MyNumber> que2) { this.que1=que1; this.que2 =que2; }
@Override
public void run() { int x=0 ; Random r =new Random(); while(x>=0){ int time =r.nextInt(50); try { Thread.sleep(time); x=que1.take(); if(x<0)break; int putTime1=r.nextInt(100); int putTime2 =r.nextInt(100); if(putTime1>putTime2){ Thread.sleep(putTime2); que2.put(new MyNumber(x+1,true)); Thread.sleep(putTime1-putTime2); que2.put(new MyNumber(x,false)); } else if(putTime1<putTime2){ Thread.sleep(putTime1); que2.put(new MyNumber(x,false)); Thread.sleep(putTime2-putTime1); que2.put(new MyNumber(x+1,true)); } else{ Thread.sleep(putTime1); que2.put(new MyNumber(x,false)); que2.put(new MyNumber(x+1,true)); } } catch (InterruptedException e) { e.printStackTrace(); } } try { que2.put(new MyNumber(-1,false)); } catch (InterruptedException e) { e.printStackTrace(); } } } class ProduceMyNumber implements Runnable{ private BlockingQueue<MyNumber> que2; public ProduceMyNumber(BlockingQueue<MyNumber> que2) { this.que2 = que2; }
@Override
public void run() { MyNumber num =new MyNumber(0,false); Set<Integer> set = new HashSet<>(); int count=0; int nThread=2; while(nThread>0){ try { num = que2.take(); if(num.num<0){ nThread--; continue; } if(num.isBig){ if(set.contains(num.num-1)){ System.out.println(num.num-1); System.out.println(num.num); count+=2; } else set.add(num.num); } else{ if(set.contains(num.num+1)){ System.out.println(num.num); System.out.println(num.num+1); count+=2; } else set.add(num.num); } } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("总计:"+count); } }
点赞
回复
分享
发布于 2017-08-01 17:12
暂无评论,快来抢首评~
相关推荐
10-11 14:08
远景_运维开发工程师(准入职员工)
远景能源内推, 远景能源内推码
远景能源-质量管理工程师(三面✅)7.24官网投简历8.10一面✅hr很和蔼,我自我介绍结束以后,因为我上一份实习是处理PDF标准文件的,hr会偏向问我处理非结构化数据的流程,还有一些比较常规的问题,比如对远景公司主营业务有哪些了解,对质量管理有哪些了解,你认为你的专业或实习经历对质量管理有哪些帮助。一面结束hr认为我可能比较适合质量管理的数字化方向。8.14二面✅电话面,本来应该是视频面,但是二面的hr应该很忙,在国外出差,所以他就直接给我打了电话。当时我是不知情的,还在腾讯会议等待间,看到手机有国外电话打过来,下意识觉得是诈骗骚扰电话,我就直接挂了,还挂了两次。这个时候我觉得有点不太对劲,...
点赞
评论
收藏
分享
10-15 16:26
已编辑
门头沟学院 C++
华橙网络-软件测试工程师-一面
📍面试公司:华橙网络🕐面试时间:10.15💻面试岗位:软件测试工程师9.2投递->10.15一面时长15分钟左右,面试不难,整体偏聊天为主1.自我介绍2.两个项目介绍一下(项目聊得比较多,简历上有一个AI测试应用项目,面试官貌似感兴趣,所以感觉现在简历上沾点AI相关的内容就挺不错的)3.实习介绍一下4.职业规划?5.为什么做测试,如何看待测试岗位?6.图片显示卡顿,从哪些方面考虑?7.发送图片,有哪些测试点,设计测试用例8.老家是哪里,工作城市怎么考虑9.反问
查看8道真题和解析
点赞
评论
收藏
分享
08-29 16:31
中国科学院大学 算法工程师
美团连后端都打上稀缺吗
rt
🐭🐭不想面试啦�...:
哈哈哈哈,是hc稀缺是吧。一边稀缺,一边后端简历多到捞不出来
点赞
评论
收藏
分享
10-14 14:13
柠檬微趣_HR(准入职员工)
柠檬微趣内推,柠檬微趣内推码
柠檬微趣一面1.自我介绍2.hashmap底层原理,是否是线程安全的3.不安全应该使用什么4.currenthashmap原理,线程不安全的情况 这块一致追问 答的不太好5.多个线程写一个日志文件,怎么保证并发安全(不太会)6.jvm内存结构7.垃圾回收 怎么确定回收哪些垃圾8.多线程使用场景9.常见的gcroots10.网络分层结构11.tcp和udp区别12.tcp概念问了一大堆13.https了解吗 具体说一下 也是说了一大堆14.mysql索引15.b+树 为什么不用红黑树 b+树的查询效率 推导一下总结:一直问,不会就想,偶尔会给一个反馈,没问实习,没问项目,纯纯八股🍋【柠檬微趣2...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
族望留原籍,家贫走四方
5184
2
...
待了一年,一点没亏
2474
3
...
找工作,不用等许可
2302
4
...
被秋招面试感动了
2117
5
...
实习越多越好还是越精越好?
1990
6
...
大厂这么卷,去国企,外企“上岸”?
1890
7
...
回忆录:计算机鼠鼠这一路的成长
1776
8
...
1016 信也科技一面
1624
9
...
想问一下27届明年暑期实习大概什么时候开
1539
10
...
记录秋招 Offer 选择(从纠结到坚定)
1423
创作者周榜
更多
正在热议
更多
#
你现在会用到哪些AI技能?
#
7480次浏览
90人参与
#
腾讯工作体验
#
514589次浏览
3551人参与
#
智慧芽求职进展汇总
#
2014次浏览
5人参与
#
大厂VS公务员你怎么选
#
30286次浏览
413人参与
#
我的求职进度条
#
96248次浏览
1234人参与
#
发面经攒人品
#
2603944次浏览
35642人参与
#
平安产险科技校招
#
952次浏览
0人参与
#
实习在多还是在精
#
35904次浏览
251人参与
#
你还有多少年退休?
#
27071次浏览
192人参与
#
小马智行求职进展汇总
#
13852次浏览
50人参与
#
秋招踩过的“雷”,希望你别再踩
#
87066次浏览
1101人参与
#
顺丰求职进展汇总
#
63756次浏览
316人参与
#
你的房租占工资的比例是多少?
#
65293次浏览
801人参与
#
我对___祛魅了
#
132723次浏览
737人参与
#
反问环节如何提问
#
115760次浏览
2472人参与
#
实习下班不想学习,正常吗?
#
21014次浏览
178人参与
#
如果不考虑收入,你最想做什么工作?
#
32865次浏览
188人参与
#
你见过哪些工贼行为
#
17298次浏览
96人参与
#
金蝶求职进展汇总
#
54201次浏览
263人参与
#
校招谈薪一定要知道的事
#
13973次浏览
119人参与
#
总结:哪家公司面试体验感最好
#
70478次浏览
416人参与
#
你觉得材料多少算高薪
#
26389次浏览
159人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务