
JUC
听友
这个作者很懒,什么都没留下…
展开
-
JUC学习(3)集合的并发安全解决方案、JUC常用辅助类
并发下ArrayList是不安全的,多线程操作同一个集合会出现java.util.ConcurrentModificationException 并发修改异常 解决方案: 1. List<String> list = new Vector<>(); 2. List<String> list = Collections.synchronizedList(new ArrayList<>()); 3. List<String> list = new C原创 2020-07-12 01:21:17 · 211 阅读 · 0 评论 -
JUC学习(2)8锁现象彻底理解锁
线程休息使用JUC包下的TimeUnit。 /** *8锁,就是关于锁的8个问题 *1、标准情况下,两个线程先打印 发短信还是 打电话? 1/发短信 2/打电话 *1、sendSms延迟4秒,两个线程先打印 发短信还是 打电话? 1/发短信 2/打电话 */ public class Test1 { public static void main(String[] args) { Phone phone = new Phone(); //锁的存在 new Thread(()-&原创 2020-07-12 00:13:13 · 177 阅读 · 0 评论 -
JUC学习(1)生产者消费者问题
线程有哪些状态? NEW:新生 RUNNABLE:运行 BLOCKED:阻塞 WAITING:等待 TIMED_WAITING:超时等待 TERMINATED:终止 wait / sleep的区别 来自不同的类:wait来自Object,sleep来自Thread。 关于锁的释放:wait会释放锁,sleep睡眠不会释放锁 使用的范围不同:wait必须在同步代码块中,sleep可以在任何地方睡 是否需要捕获异常:wait不需要捕获异常,sleep必须要捕获异常。 Lock三部曲 // 1. new原创 2020-07-11 22:18:55 · 202 阅读 · 0 评论