自己做网站怎么编代码快速免费建网站
news/
2025/10/5 11:07:32/
文章来源:
自己做网站怎么编代码,快速免费建网站,新野微网站建设,h5响应式网站做动画为什么80%的码农都做不了架构师#xff1f; 多线程消费队列到指定个数时触发一个生产线程往队列中补充元素#xff0c;保证队列中有足够的数据供消费#xff0c;不至于使消费线程等待#xff0c;也不至于在队列中堆得过多。假设10人消费#xff0c;先放2个… 为什么80%的码农都做不了架构师 多线程消费队列到指定个数时触发一个生产线程往队列中补充元素保证队列中有足够的数据供消费不至于使消费线程等待也不至于在队列中堆得过多。假设10人消费先放2个篮子每个篮子10个篮子得够大怎么也得够在场的人分一次吃完一篮子赶紧叫人再提一篮子来谁负责叫人吃篮子里最后一个的或吃另外一篮第一个的这样得知道哪个是最后一个哪个是第一个。另外一个方法在篮子底部放个托盘谁拿到托盘谁负责叫人全部消费完时篮子里不放托盘了按人数在篮子里放甜点每人一份吃完收工。 final long startTime System.currentTimeMillis();//开始时间
int index 0;//模拟处理索引
final int person 10;//模拟消费者个数final LinkedBlockingQueueObject queue new LinkedBlockingQueueObject(1000);
/**托盘*/
class Salver{};
/**甜点*/
class Dessert{};
/**模拟启动程序*/
void start() {/* 1、先来两篮子 */for (int k 0; k 2; k) {for (int i 0; i person; i) {queue.add(index);queue.add(new Salver());}}/* 2、启动消费者 */for (int i 0; i person; i) {new Thread(new Consumer()).start();}
}
/**消费者*/
class Consumer implements Runnable{Overridepublic void run() {try {while (true) {Object thing queue.take();if (thing instanceof Salver) {//拿到托盘叫人再来一篮子接着取下一个new Thread(new Producer()).start();continue;} else if (thing instanceof Dessert) {//吃完甜点收工break;}/*模拟实际处理*/System.out.println(thing);Thread.sleep(1000);}} catch (Exception e) {e.printStackTrace();}}
}
/**生产者*/
class Producer implements Runnable {Overridepublic void run() {try {synchronized(Producer.class){//避免没拿来消费完同时拿/* 消费1分钟停止根据实际情况调整比如库里没有待处理数据或不足一篮子 */if (System.currentTimeMillis() - startTime 60 * 1000) {/* 人均一份甜点 */for (int i 0; i person; i) {queue.put(new Dessert());}} else {/* 加一篮子 */for (int i 0; i person; i) {queue.put(index);}/* 放一托盘 */queue.put(new Salver());}}} catch (Exception e) {e.printStackTrace();}}
} ps:流控思路——多生产者定量消费 转载于:https://my.oschina.net/h2do/blog/524605
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928165.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!