首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
09-23 13:45
门头沟学院 运营
你的秋招,我的秋招,完全不一样~
可恶,我不是天才嘛为啥才九月,全网就在晒offer了我还是0offer呢?秋招不是刚刚启动吗?面试不是才开始吗? 难道我的秋招和别人的是两种版本?
我的秋招日记
点赞
评论
收藏
分享
09-18 12:11
门头沟学院 运营
我将化身千手观音
我妈想象中的我:⬇⬇⬇
点赞
评论
收藏
分享
09-23 12:40
重庆邮电大学 Java
极兔快递
不是哥们,这对吗,给我干哪来了
点赞
评论
收藏
分享
08-08 14:38
周口职业技术学院 Web前端
网易笔试
网易的绝对是海笔,我一个大专都给我发笔试了
吴offer选手:
网易这个双机位麻烦死了
投递网易等公司10个岗位
点赞
评论
收藏
分享
09-18 18:35
门头沟学院 前端工程师
滴滴池子这么大嘛
9.4一天面完,到现在也没消息,滴滴池子这么大嘛
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
签完三方了,分享下我的谈薪小技巧
1.7W
2
...
秋招完全失败,想和美团字节爆了😅
1.3W
3
...
offer还在路上, 但段子已经杀疯了!
1.2W
4
...
机械面试八股之机械设计高频考点
1.1W
5
...
为了这一切值得嘛?
6794
6
...
谁偷走了你的大厂梦?个人警示录
5121
7
...
双非拿下字节转正,我想我做对了这些事情
4148
8
...
秋招南绷
3266
9
...
我司冷门但不邪门
3213
10
...
百度笔试
3064
创作者周榜
更多
正在热议
更多
#
校招谈薪技巧
#
20808次浏览
351人参与
#
如何看待应届生身份?
#
159184次浏览
1752人参与
#
乐堡互娱校招
#
13327次浏览
171人参与
#
入职跑路最快的一次经历
#
10917次浏览
80人参与
#
面试被问第一学历差时该怎么回答
#
177048次浏览
1326人参与
#
面试时间长是好事吗?
#
35866次浏览
287人参与
#
思朗科技求职进展汇总
#
25918次浏览
194人参与
#
___岗狗都不干,我干!
#
5257次浏览
49人参与
#
如果你有一天可以担任公司的CEO,你会做哪三件事?
#
35664次浏览
495人参与
#
材料人的华为红黑体验
#
30459次浏览
175人参与
#
你在职场中沾染到的“坏”习惯
#
4296次浏览
61人参与
#
拿到offer之后,可以做些什么
#
8125次浏览
90人参与
#
毕业季,你想好怎么跟生活对线了吗?
#
245130次浏览
3810人参与
#
机械人,你的第一份感谢信是谁给的
#
35035次浏览
336人参与
#
TCL华星光电工作体验
#
5559次浏览
20人参与
#
应届生简历当中,HR最关注哪些?
#
333466次浏览
3386人参与
#
面试题刺客退退退
#
420960次浏览
6620人参与
#
提名点击就挂的公司
#
37617次浏览
198人参与
#
国企秋招,你投了吗?
#
4215次浏览
44人参与
#
中兴工作体验
#
33658次浏览
298人参与
#
实习打杂,要跑路吗
#
44319次浏览
312人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务