首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
今天 00:20
科大讯飞_教育BG_后端开发(准入职员工)
2026春招启动
春招提前批已开的互联网大厂:OPPO(1.27)、网易游戏(1.12)、三七互娱(1.16)、小米(1.18)、百度(1.20)、大疆(1.22)、字节跳动(1.25)、华为(1.28)总的来说,目前来看很多企业开启春招的时间越来越早,我们的核心任务是优化简历、复盘秋招、锁定目标企业、心态放平、准备笔试面试题库!#今年春招是金一银二嘛?#
点赞
评论
收藏
分享
01-10 10:56
河北工业大学 深度学习
撤退
🍤我tm来啦
迷茫的大四🐶:
都让开,我tm来啦
点赞
评论
收藏
分享
2025-12-22 15:25
南京工业大学 运营
对着老板贴脸开大了
发消息发到工作群了。。。主要是朋友也看错群了还回复了
希望offer多多的...:
现在群里是不是已经寂静到能听见呼吸了
你小心翼翼的闯过多大的祸...
点赞
评论
收藏
分享
01-27 10:46
江南大学 Java
实在智能 - Java开发 - 实习二面
自我介绍我看你做了一个抽奖系统,就这个系统实现的时候遇到的最大的困难是什么抽奖系统用的是框架,还是手搓的?(回答手搓的),那说一下实现的细节为什么要用 MQ,它使用的意义在哪?细说一下策略模式和责任链模式在项目中是如何使用的?介绍一下另外一个项目使用 ai 编程的时候有碰到什么问题吗,并且有什么收获吗?项目测试是怎么测的?
查看7道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
一个普通人在985学计算机的四年
4644
2
...
大家都是怎么背八股的?
3453
3
...
面经 | 腾讯S3后台开发暑期提前批(一面)
3367
4
...
每天辣么多AI新项目,自己怎么跟得上呢
1586
5
...
Java高薪必备八股文:春招备战指南
1548
6
...
27菜狗速通百度
1527
7
...
没关系,我的出租屋很曼妙
1502
8
...
快手年终发得又多又早,这波是我羡慕了
1178
9
...
AI求职Prompt合集:适合0实习选手
1171
10
...
挣钱就买金子!我爱赚钱!
1140
创作者周榜
更多
正在热议
更多
#
今年春招是金一银二嘛?
#
25377次浏览
235人参与
#
软开人,秋招你打算投哪些公司呢
#
175782次浏览
1302人参与
#
没关系,至少我的__很曼妙
#
10718次浏览
162人参与
#
帆软软件工作体验
#
9898次浏览
41人参与
#
牛客吐槽大会
#
9357次浏览
172人参与
#
AI求职实录
#
15857次浏览
379人参与
#
总结:哪家公司面试体验感最好
#
79569次浏览
445人参与
#
关于提前批我想问
#
265290次浏览
2298人参与
#
我的秋招“寄”录
#
414798次浏览
2932人参与
#
抛开难度不谈,你最想去哪家公司?
#
13979次浏览
211人参与
#
赚钱的意义在这一刻具象化
#
10768次浏览
208人参与
#
快手年终开大包
#
3404次浏览
48人参与
#
你的第一家实习公司是什么档次?
#
11752次浏览
131人参与
#
为什么有人零实习也能进大厂?
#
12986次浏览
233人参与
#
Prompt分享
#
16693次浏览
389人参与
#
1月小结:你过的开心吗?
#
4608次浏览
81人参与
#
十一月总结
#
76476次浏览
424人参与
#
实习工作,你找得还顺利吗?
#
564510次浏览
6664人参与
#
AI时代的工作 VS 传统时代的工作,有哪些不同?
#
15344次浏览
356人参与
#
小红书求职进展汇总
#
214472次浏览
1311人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务