随笔分类 - Java
摘要:阶段执行器,跟Barrier有点类似。 分阶段执行,一个阶段中所有的线程都执行完了再执行下一个阶段的线程。 下面的代码是模仿一对新人结婚的场景:1. 等所有人到齐了 2. 等所有人都吃完了 3.等所有人都离开了 4. 新人入洞房。这四个步骤分为四个阶段执行。 假设婚礼参加都人数算上新人一共有7个人,
阅读全文
摘要:当线程树达到一定数量,这个栅栏放到,执行这些数量的线程,然后有拦住下一批线程。 第一个参数指的是拦住的线程数。它要等到放过去的那一批线程全部执行完才能执行下一批,相当于一个限流器,相当于我们现实中挤地铁一样。
阅读全文
摘要:ReentrantLock 是可以替代synchronized使用的。 区别与优点: ReentrantLock vs synchronized 底层是CAS vs sync锁升级 可以使用tryLock进行一个锁状态的判断和处理 可以使用lockInterrupptibly 打断当前锁的等待状态
阅读全文
摘要:先解释下cpu指令重排序:cup的执行效率一般是内存的100倍左右,假设当cup先后接收到两条指令,指令1和指令2,指令1在执行指令到内存给cpu返回结果需要5秒,但是指令2的整个过程只需要2秒,那么cpu会优先执行指令2,再执行指令1,这就叫cpu指令重排序. 请看图解: 那么volatile:
阅读全文
摘要:死锁:线程之间因条件相互竞争,导致线程都不能正常执行完,从而产生了死锁。 死锁的例子: public class TestDeadLock implements Runnable { public int flag = 1; static Object o1 = new Object(), o2 =
阅读全文
摘要:如何保证多个线程多同一个资源的共享透明化: 一个有问题的多线程的例子:: public class TestSync implements Runnable{ Timer timer = new Timer(); public static void main(String[] args) { Te
阅读全文
摘要:什么叫线程,简单来说一句话,就是程序的执行路径。 创建一个线程类,两种方式: 1. 实现Runnable接口 2. 继承Thread类
阅读全文

浙公网安备 33010602011771号