首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
01-14 13:56
三一重能_机械工程师(准入职员工)
莉莉丝游戏内推,莉莉丝游戏内推码
莉莉丝游戏数据分析师的面试经验:面试流程与内容:面试通常包含自我介绍、针对实习和项目经历的深入提问、业务指标体系及思路的考察、数据处理和分析能力的评估等环节。具体可能包括A/Btest的配置流程、样本量计算、功能上线后的指标监控方式和具体指标等。游戏相关知识:面试官会询问应聘者平时玩的游戏、对特定游戏的看法,以及游戏内重要数据的识别和分析,如流失原因、付费表现影响因素等。综合能力与岗位匹配度:面试还会考察应聘者的优势、最近一年的目标及其为实现目标所做的努力,以及对游戏领域市场动态的了解等,以评估其与岗位的匹配度和潜力。 莉莉丝游戏2026校招补招启...
点赞
评论
收藏
分享
01-11 08:35
清华大学 Java
啥公司有java 寒假实习
🧑💻 1. 携程 — Java开发实习(偏后端、业务开发)携程针对2026届学生开放Java实习/实习岗位,主要职责包括:分析、设计、开发携程产品的核心功能;优化高并发、高性能在线系统;熟悉Java语言、数据结构、MySQL等基本后台技术要求。📌 适合:大三/大四本科及硕士学生,有一定算法基础和项目经验的同学。🧠 2. 北京掌上先机网络科技有限公司 — Java开发实习该公司在北京市有Java实习岗位,主要内容包括:在导师带教下参与模块设计和业务系统开发;有机会用Spring Boot、MyBatis等框架实战;欢迎2026届本科毕业生申请。📌 适合:想从基础业务模块开始积累经验的...
点赞
评论
收藏
分享
2025-11-26 09:37
山西大学 测试工程师
我真的会谢
累死的一条狗:
学长你电脑闹鬼了
点赞
评论
收藏
分享
2025-12-11 14:24
门头沟学院 Java
我的自我介绍引来了hr的关注
好好好,笑死我了
牛客35720396...:
不要用boss,全是骗
点赞
评论
收藏
分享
01-14 14:34
学而思_学科教育管理(准入职员工)
学而思内推,学而思内推码
1️⃣简单介绍一下自己2️⃣有考研考公的打算吗3️⃣为什么选择和专业不同的一个行业4️⃣在大学生活中发生过什么让你压力很大的事吗5️⃣你在🎵和🍠上对学而思有了解吗6️⃣怎样看待续报7️⃣如果线上带班给你几百人,你能接受吗8️⃣父母支持你的工作吗9️⃣你对薪酬待遇有什么了解和意见吗学而思教育(好未来)2026届提前批校园招聘进行中【企业介绍】国内教培行业龙头,上市企业;学而思成立于2003年,是好未来旗下综合性教育品牌,目前已有39所分校、350+教学点。【面向对象】22-25届毕业生均可投递,专业不限,应聘阶段无教资要求【招聘岗位】全职授课主讲教师-高中:数、理、化、英-彼芯:理科、文科-...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
字节后端日常一二三面面经(oc)
1.2W
2
...
一次面试让我重新认识了 Cursor
6424
3
...
从牛客开始的实习生涯
3516
4
...
「评论焚诀」在牛客,我解锁了评论新姿势💜
3516
5
...
关于被叫做题家……
3421
6
...
26届软件测试简历,麻烦各位大佬指点迷津
2263
7
...
女朋友拿了字节offer,我反而焦虑
2216
8
...
学了JAVA半年了我已经无敌了
2205
9
...
18.滴滴-效能平台后端实习一面
2166
10
...
前端日常实习如何写简历?
2155
创作者周榜
更多
正在热议
更多
#
实习的你做了哪些离谱的工作
#
9039次浏览
120人参与
#
工作压力大,你会干什么?
#
13205次浏览
317人参与
#
为了入行xx岗,我学了__
#
5701次浏览
103人参与
#
找实习记录
#
29932次浏览
497人参与
#
简历第一个项目做什么
#
6943次浏览
110人参与
#
你都见过什么样的草台班子?
#
6392次浏览
66人参与
#
Prompt分享
#
2364次浏览
72人参与
#
被说“做题家”,你的反应是_____?
#
2043次浏览
66人参与
#
如果不上班,你会去做什么
#
6743次浏览
268人参与
#
AI让你的思考变深了还是变浅了?
#
4493次浏览
134人参与
#
邪修省钱套路
#
7231次浏览
242人参与
#
我的付费上班经历
#
13470次浏览
202人参与
#
机械人,秋招第一次笔试的企业是哪家?
#
86191次浏览
621人参与
#
小厂实习有必要去吗
#
78037次浏览
369人参与
#
如果让你发明个APP,你会想做什么
#
1985次浏览
53人参与
#
秋招我要惩罚这些公司
#
8581次浏览
36人参与
#
大城市找工作会更容易吗
#
56964次浏览
377人参与
#
参加哪些竞赛对找工作有帮助?
#
7560次浏览
133人参与
#
大厂VS公务员你怎么选
#
78020次浏览
691人参与
#
转正答辩报告怎么写
#
51053次浏览
800人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务