
Java 并发
霄云之志
这个作者很懒,什么都没留下…
展开
-
Java并发之线程池浅析
线程池的主要构造方法第一种:newFixedThreadPool 方法创建一个固定数量的线程池,用于处理多个任务ExecutorService executorService = Executors.newFixedThreadPool(3);public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads,原创 2020-10-09 17:48:25 · 126 阅读 · 0 评论 -
Java并发之ThreadLocal浅析
ThreadLocal :顾名思义,线程本地变量原创 2020-09-21 15:41:34 · 180 阅读 · 0 评论 -
Java并发之CyclicBarrier浅析
CyclicBarrier 是什么?CyclicBarrie允许让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行。CyclicBarrier只能唤起一个任务,CountDownLatch可以同时唤起多个任务CyclicBarrier可重用,CountDownLatch不可重用,计数值为0该CountDownLatch就不可再用了代码分析:public class MyTest2 { public static原创 2020-08-21 12:04:00 · 267 阅读 · 0 评论 -
Java并发之CountDownLatch浅析
CountDownLatch 是什么?CountDownLatch基于AQS的共享模式,用来控制一个或者多个线程等待多个线程基本思想:内部存在计数器,当所有的子线程都执行到指定的地点,通过给Count 值 做减法,直到为 0 时,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务实例分析:public class MyTest1 { public static void main(String[] args) { CountDownLatch cou原创 2020-08-20 16:56:30 · 207 阅读 · 0 评论 -
锁消除和锁粗化浅析
锁消除锁消除是编译器对于锁的优化措施,在JIT编译器可以在动态编译同步代码时,使用一种逃逸分析的技术,来通过该技术判别程序中所使用的锁对象是否只被一个线程所使用,而没有散布到其他线程中;如果这种情况的话,那么JIT在编译这个同步代码时就不会生成synchronized关键字所标识的锁的申请与释放机器码,从而消除了锁的使用流程。public class MyTest4 { public void method() { Object object = new Object()原创 2020-08-17 12:13:56 · 629 阅读 · 0 评论 -
Java 并发之 wait 和 sleep 区别
wait 和 sleep 到底有什么区别sleep 方法存在于 Thread类中,而 wait 方法存在于Object类中sleep 在调用的时候不会去释放对象的锁,wait 会释放对象锁,这也是为什么 wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,因为在调用wait的时候会释放锁,所以必须得先获得锁,那么获取对象锁的方式有哪些呢?synchronized 关键字 修饰静态方法synchronized 关键字 修饰实例方法synchronized 关键字原创 2020-08-06 16:52:52 · 123 阅读 · 0 评论