多线程
文章平均质量分 65
xqxls1
有花有酒春常在,无烛无灯夜自眠
展开
-
生产者消费者问题
问题描述给定一个容器,设计两个线程,一个负责生产,一个负责消费,保证容器为空时,停止消费,容器满了之后,停止生产。方法一(synchronized)1.解题思路当容器满了之后,producer阻塞,唤醒consumer进行消费。当容器为空时,consumer阻塞,唤醒producer进行生产。2.代码实现public class ProducerConsumer1<T> { final private LinkedList<T> lists = new Li原创 2021-08-18 12:47:19 · 211 阅读 · 0 评论 -
容器并发控制
问题描述设计一个容器,有add和size两个方法,然后有两个线程,一个线程往容器里加10个数,另一个线程用来控制第一个线程,当加到5个数时,线程停止,让第一个线程继续加数方法一(Synchronized)1.解题思路直接在类里定义一个list,提供add()和size()两个方法。主方法new两个线程t1和t2,当容器数字个数不为5时,t2线程阻塞。这段时间,t1线程不断执行add()方法,当达到5个数后,t1唤醒t2,自己进入阻塞状态。t2被唤醒后,打印“t2停止”,然后又唤醒t1线程,添加原创 2021-07-19 19:53:50 · 121 阅读 · 0 评论 -
两个线程交替打印奇偶数
问题描述设计两个线程,打印1-10,一个线程打印奇数,另一个线程打印偶数,要求交替打印。 最后输出123……10方法一(Synchronized+共享变量)1.解题思路新建一个对象,并定义一个共享变量。只要flag不为1,线程t2就会阻塞,释放锁资源,所以t1线程先执行,此时flag为0,跳过while判断,然后修改flag为1,打印奇数,并唤醒t2,由于flag被改为1,下次循环,t1就会阻塞。t2被唤醒后,t1已经释放了锁资源,所以t2可以获取锁资源,并且flag为1,跳过while循环,修原创 2021-07-08 13:04:15 · 3062 阅读 · 2 评论