首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
11-13 13:21
顺丰集团_大数据挖掘与分析工程师(准入职员工)
顺丰内推,顺丰内推码
已经来工作一个多月啦,感觉幸福度很高,顺丰真的是很值得来的一家公司!公司里的氛围很好,同事们很nice很好沟通,和大家私下相处也贼融洽。工作很充实但是没什么压力,领导带教都不push,感觉每天来公司都很开心~💼 公司岗位数据分析💢 工作强度在整个集团里算卷的,顺丰科技大多数部门965美滋滋,但是我进的部门业务多975,双休基本可以保证,需求多的话周末也要赶一下进度。🫶️ 团队氛围进的团队好,前辈都很热心教人,有问必答。❤️ 职场感受希望我这次转正能通过吧,能过的话会来报喜😊顺丰集团2026届校招启动!【公司简介】:顺丰集团是世界500强企业第377位,中国第一大、世界第四大快递物流服务...
顺丰集团工作强度 307人发布
点赞
评论
收藏
分享
11-11 18:52
OPPO_AI算法部_AI研究员(准入职员工)
霸王茶姬内推,霸王茶姬内推码
1️⃣霸王茶姬面经(hr面) “简单自我介绍一下” 我大概讲了专业成绩和获奖等,我特意提到了我在社团有过活动策划的经历 “嗯有过活动策划经历是吧,说一下你对最近的市场热点有关注吗” “你了解霸王茶姬吗?就你的了解说一下” “你知道我们最近做的活动吗?” “你觉得你的沟通能力怎么样” “你知道达人是什么吗” “你了解我们这个岗位吗” “你觉得以你的经历,能为这个岗位带来什么,你做这个岗位的优势是什么” “你从大学城到公司大概要多久” -反问环节 问了薪资和上下班时间之类的 2️⃣霸王茶姬复试面经(部门主管面) “简单介绍一下自己” “你觉得做一个活动策划最重要的是什么” “你想从我们这个实习中获...
点赞
评论
收藏
分享
10-24 12:48
湖南财政经济学院 驱动开发
秋招到了个什么
双尔:
反手回一个很抱歉,经过慎重考虑,您与我的预期暂不匹配,感谢您的投递
点赞
评论
收藏
分享
09-25 21:12
门头沟学院 Java
这种简历也能进大厂
标题党了。 双非本科,想找下一段实习,想求求大佬指点一下。有没有啥需要修改和补充的地方,是要加一个项目还是换掉黑马点评,还是要换一下包装的实习经历。
🐟生:
双非,运气 > 一切
点赞
评论
收藏
分享
11-14 21:38
中南大学 Java
又在互联网苟活一周捏
又在互联网苟活一周,这周末好好放纵下就不带公司电脑回去了。#牛客AI配图神器#我再统计一波进互联网的意愿情况,看看有多少人悬崖勒马、回头是岸了。
如果再来一次,你还会选择...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
拒了9个offer最终留米,我秋招到底获得了什么?
6282
2
...
27有赞实习二面
2861
3
...
27百度日常实习一面
1506
4
...
27届非科班转码没机会了吗
1502
5
...
个人觉得go语言优势很大
1265
6
...
百度开奖,不太行啊
1225
7
...
北京-益先科技-二面-技术面
1186
8
...
给学弟学妹们一点分享,一个30岁前端的路口选择
1144
9
...
字节 你自己说我该不该喷你
1107
10
...
offer咨询
911
创作者周榜
更多
正在热议
更多
#
互联网行业现在还值得去吗
#
36534次浏览
261人参与
#
落户对你的求职选择影响有多大
#
29172次浏览
101人参与
#
虾皮开奖
#
42419次浏览
202人参与
#
你小时候最想从事什么职业
#
132337次浏览
1971人参与
#
第一次找实习,我建议__
#
27723次浏览
347人参与
#
非技术2024笔面经
#
435224次浏览
4881人参与
#
参加完秋招的机械人,还参加春招吗?
#
80376次浏览
614人参与
#
机械人的工作环境真的很差吗
#
35705次浏览
132人参与
#
牛友的志愿填报指南
#
41539次浏览
196人参与
#
韶音科技求职进展汇总
#
62201次浏览
506人参与
#
从mentor身上学到了__
#
23388次浏览
386人参与
#
你怎么评价今年的春招?
#
144087次浏览
1392人参与
#
外出实习被同学举报
#
6084次浏览
39人参与
#
除了主业以外,你还有哪些其他收入?
#
36404次浏览
303人参与
#
打工人的至爽时刻or至暗时刻
#
42936次浏览
223人参与
#
材料进Fab厂真的劝退吗?
#
60776次浏览
209人参与
#
你认为工作的意义是什么
#
206226次浏览
1309人参与
#
华为海思工作体验
#
36125次浏览
146人参与
#
秋招暂停,我将对以下公司做出处罚__
#
31983次浏览
147人参与
#
如果今天是你的last day,你会怎么度过?
#
49797次浏览
304人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务