随笔分类 -  多线程

volatile 可见性:退不出去的循环
摘要:volatile 可以保证变量的有序性和可见性 有一个共享变量 private static boolean run = false(共享变量会放到主存中), 当某个线程多次访问该变量次数达到某个阈值时,就会从高速缓存中获取该值,不会在从主存中获取, 可能会导致该值已经被修改了,但是拿到的不是被修改 阅读全文

posted @ 2021-11-03 15:34 lmcc 阅读(82) 评论(0) 推荐(0)

Reentrantlock锁
摘要:Reentrantlock : 加锁方式有三种 Reentrantlock lock = new Reentrantlock (); 1、lock.lock(); 可重入,不可以打断 ,lock.lock()和lock.unlock()必须成出现 2、lock.lockInterruptibly() 阅读全文

posted @ 2021-11-03 13:15 lmcc 阅读(103) 评论(0) 推荐(0)

park和wait的区别
摘要:park和wait 都是都是用来阻塞和唤醒线程的 park&unpark 可以先unpark,而wait&notify不能先notify wait&notify&notifyAll必须配合Object Monitor一起使用,而park,unpark不必 park&unpark 是以线程为单位来阻塞 阅读全文

posted @ 2021-11-02 17:42 lmcc 阅读(1015) 评论(0) 推荐(0)

线程知识点
摘要:1、wait 会释放cpu 也会释放锁 2、sleep 只会释放cpu 不会释放锁 3、wait 和sleep 都可以用interrupt()方法唤醒,但是会抛出异常 抛出异常后 4、睡眠结束的线程未必立即执行 5、yield 让出cpu 让running 变为runable状态 ,但是有时候也存在 阅读全文

posted @ 2021-11-02 15:56 lmcc 阅读(59) 评论(0) 推荐(0)

导航