首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
昨天 14:51
点点互动_产品管理工程师(准入职员工)
点点互动内推,点点互动内推码
25 秋招|点点互动+一面,广告创意从**就能看出来这家公司对文科生非常友好三大模块,一共六道问答题,主要考察候选人对游戏、广告、各大社交平台的认识和理解,以及回答问题的逻辑。回答这类问题的时候建议结合题干和应聘岗位的特征作答。比如其中一个问题是:【如果让你选择一个平台去做自媒体,你会选择哪个平台?】我的回答模式:首先说明我选择的平台,接下来分析该平台的优势,包括平台运作方式、用户群体方向、内容特点等,中间也花了一两句话介绍了自己的兴趣和个人优势(爱写+深度冲浪选手)。9.10 刚刚结束了这家游戏公司广告创意策划岗的一面,感觉还不错!根据上次的面试反思,主要【改进了自我介绍的格式】,并在面试前...
点赞
评论
收藏
分享
昨天 22:52
已编辑
门头沟学院 Java
10.17秋招进展-挂的挂,拒的拒
1.迅雷二面完事发来感谢信了,大概预料到了,二面面试官大概说我知识面很广,掌握的不深,果然没了,反正我也不想去2.经纬恒润发来二面了,还得准备ppt啥的,好麻烦,网上这个厂风评好差,拒了
投递北京经纬恒润科技股份有限公司等公司10个岗位
点赞
评论
收藏
分享
10-15 19:07
门头沟学院 产品经理
人有时候也贱
点赞
评论
收藏
分享
昨天 11:09
韶音科技_电子工程师(准入职员工)
韶音科技内推,韶音科技内推码
韶音科技 可靠性工程师 面经HR面 7.1 (20-30min)HR很和善,问的问题不难回答主要是针对学习成绩、高考排名和所学科目情况针对项目情况也有一些基本的了解随后是一些生活兴趣方面的问题反问总的来说难度不大技术面 7.29 (30min左右)技术面很专业 详细问了项目内容是连续性的追问 针对整个项目框架项目具体细节然后针对某一个板块从你的思路开始深挖包括理论、实践以及解决方案,有一定难度建议多巩固理论知识且追问节奏较快,有压力反问环节综合面 8.5 (30min)是一位女主管 感觉水平很高问题都很有针对性,也是深挖项目感觉她比较追求高效率也可能是我太啰嗦了,建议言简意赅有重点的回答询问方...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
BG一般,如何逆天改命拿下后端秋招SSP?
1.1W
2
...
从面试官的角度看待一场面试是怎么样的?
9472
3
...
族望留原籍,家贫走四方
7237
4
...
大厂这么卷,去国企,外企“上岸”?
5592
5
...
团、节、东孝子全部启动启动启动!(26届后端秋招总结)
4218
6
...
待了一年,一点没亏
3324
7
...
应届生们听我一句劝,一个老学长的肺腑之言
3237
8
...
被秋招面试感动了
2918
9
...
作为普通家庭出身的我,为什么非大厂不可?
2685
10
...
找工作,不用等许可
2628
创作者周榜
更多
正在热议
更多
#
你现在会用到哪些AI技能?
#
3046次浏览
63人参与
#
为什么国企只招应届生
#
207050次浏览
1232人参与
#
未岚大陆求职进展汇总
#
5515次浏览
75人参与
#
实习在多还是在精
#
30938次浏览
221人参与
#
你的房租占工资的比例是多少?
#
63573次浏览
791人参与
#
秋招踩过的“雷”,希望你别再踩
#
74784次浏览
1015人参与
#
智慧芽求职进展汇总
#
1273次浏览
5人参与
#
小马智行求职进展汇总
#
13049次浏览
49人参与
#
24届的你们现状如何了?
#
98371次浏览
509人参与
#
我的求职进度条
#
69974次浏览
1000人参与
#
实习下班不想学习,正常吗?
#
17484次浏览
166人参与
#
HR问:你期望的薪资是多少?如何回答
#
63247次浏览
636人参与
#
你见过哪些工贼行为
#
14972次浏览
85人参与
#
反问环节如何提问
#
114472次浏览
2440人参与
#
如果不考虑收入,你最想做什么工作?
#
32114次浏览
185人参与
#
校招谈薪一定要知道的事
#
11834次浏览
110人参与
#
顺丰求职进展汇总
#
62759次浏览
312人参与
#
大厂VS公务员你怎么选
#
21113次浏览
333人参与
#
找工作中的小确幸
#
24137次浏览
250人参与
#
牛客租房专区
#
118470次浏览
1334人参与
#
求职遇到的搞笑事件
#
140443次浏览
852人参与
#
你觉得什么岗位会被AI替代
#
14771次浏览
161人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务