首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
联想
校招火热招聘中
官网直投
相关推荐
林小白zii
03-31 14:21
香港大学 计算机类
vivo笔试 vivo笔试题 0313
笔试时间:2024年03月13日历史笔试传送门:2023秋招笔试合集第一题题目:计算出非回文字符串长度回文字符串是一种特殊格式的字符串,如果一个字符串满足不区分大小写,且保留数字和字母,去掉其余的符号之后,短语正着读和反着读都一样,则可以认为该短语是一个回文串。假定给出一个字符串A,其子串是A删除一个或连续多个字符后的新字符串B,比如字符串"i" "iq" "qoonex" "nex" "iex"等都是字符串"IQOONEX"的子串,但是"iqon" &q...
投递vivo等公司10个岗位 >
2024 BAT笔试合集
软件开发2024笔面经
点赞
评论
收藏
转发
匿名牛油
不愿透露姓名的神秘牛友
04-02 16:43
已编辑
#机械制造薪资爆料#华为
华为
智能车控
18*12-16
本科985
点赞
评论
收藏
转发
m_m_
03-26 11:47
湖北工业大学 电子商务类
继续等大厂or中小厂?
#找工作,你会甘心进小厂还是猛冲大厂# #我的求职思考# #大厂# 从三月十号开始投的大厂,陆续的笔试面试就三次,最长的被拷打了1h➕,后面都没二面的消息。。。24号在boss投500人内的中小厂,昨天线下面,今天就发offer了。。。求助,望佬们给给建议
找工作,你会甘心进小厂还是猛冲大厂
我的求职思考
点赞
评论
收藏
转发
myoffer_newoffer
03-18 16:56
东南大学 电子信息类
暑期实习哪些厂有机考?
已知美团 携程 网易 华为在面试前会有笔试机考。本人通信专业,大概率还是去华为,想在华为机考前练练手。想问下各位还有哪些公司暑期实习是机考的?方向和互联网不太相关,单纯蹭蹭机考 #暑期实习# #华为# #美团#
投递美团等公司10个岗位
点赞
评论
收藏
转发
猪爪玊
04-09 11:19
重庆邮电大学 计算机类
根本找不到实习
可不可以麻烦大佬们帮我拷打一下简历啊?根本找不到实习😭😭😭😭
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
全站热榜
1
...
5.6校招&实习招聘信息汇总
1.2W
2
...
现在一点都不焦虑了
4959
3
...
【薪资爆料第二期】打破信息差!爆料薪资拿200元京东卡!
4918
4
...
秋招太卷,春招捡漏——24春招总结
4878
5
...
27届实习
3756
6
...
全面讨论 后端、前端、客户端的区别
3735
7
...
C++太散、Java太卷 后端自救之14天转go
3264
8
...
字节番茄小说一面(46min,纯八股)
2859
9
...
五一结束,依然没实习
2484
10
...
二本学院硕士进大厂的救赎之路
2032
正在热议
#
牛客帮帮团来啦!有问必答
#
490334次浏览
8615人参与
#
春招你拿到offer了吗
#
332283次浏览
5000人参与
#
0offer是寒冬太冷还是我太菜
#
378188次浏览
4535人参与
#
找不到好工作选择GAP真的丢人吗
#
10986次浏览
105人参与
#
工作两年想退休了
#
14078次浏览
137人参与
#
产品面经
#
14974次浏览
335人参与
#
华为求职进展汇总
#
460988次浏览
4559人参与
#
找工作时遇到的神仙HR
#
162117次浏览
1663人参与
#
许愿池
#
70036次浏览
1506人参与
#
最后再改一次简历
#
759755次浏览
10792人参与
#
实习工作,你找得还顺利吗?
#
15446次浏览
196人参与
#
担心入职之后被发现很菜怎么办
#
27993次浏览
248人参与
#
24届硬件人与华为的爱恨情仇
#
21928次浏览
229人参与
#
如何一边实习一边秋招
#
220959次浏览
4305人参与
#
实习,投递多份简历没人回复怎么办
#
882910次浏览
15812人参与
#
互联网没坑了,还能去哪里?
#
348611次浏览
5537人参与
#
没有实习经历,还有机会进大厂吗
#
291871次浏览
6224人参与
#
你想对下半年说点什么
#
6515次浏览
142人参与
#
简历中的项目经历要怎么写
#
396855次浏览
6639人参与
#
中兴求职进展汇总
#
52743次浏览
512人参与
牛客网
牛客企业服务