java并发
文章平均质量分 71
kusedexingfu
这个作者很懒,什么都没留下…
展开
-
java子线程获取父线程本地变量
我们都知道ThreadLocal可以设置本地变量,之后在当前线程中获取。但是如果我们在线程中设置了变量,在子线程需要获取,该如果做呢?InheritableThreadLocal原创 2021-06-12 00:41:01 · 4972 阅读 · 2 评论 -
ReentrantLock源码解析
首先来看 ReentrantLock 的两个构造函数:public ReentrantLock() { sync = new NonfairSync(); // 非公平锁}public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync();}无参的构造函数创建了一个非公平锁NonfairSync,用户也可以根据构造函数,设置一个 boolean 类型的值,来选择使用非公平原创 2020-06-21 18:27:10 · 161 阅读 · 0 评论 -
ThreadPoolExecutor的的核心线程回收设置allowCoreThreadTimeOut
如果你对ThreadPoolExecutor的执行还不了解,可以参考有界、无界队列对ThreadPoolExcutor执行的影响这篇文章。在ThreadPoolExecutor类中有个allowCoreThreadTimeOut(boolean value)方法,该方法用来设置是否回收在保活时间后依然没没有任务执行核心线程。下面通过程序来验证该参数的设置public class PoolThreadRecycling { private static final int CORE_P原创 2020-06-21 00:15:32 · 6052 阅读 · 2 评论 -
并发工具类:同步屏障CyclicBarrier
参考链接:http://ifeve.com/concurrency-cyclicbarrier/CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会解除,所有被屏障拦截的线程才会继续执行。CyclicBarrier默认的构造方法是CyclicBa原创 2017-05-25 19:59:33 · 2683 阅读 · 0 评论 -
java多线程模式:Future模式
Future模式类似于商品订单。当在网购时,下了一个订单后,我们可以做其他事情,等待商品送货上门即可。或者就像在页面上使用ajax请求的时候,页面的一些内容是异步的向后台发请求,我们可以正常的浏览页面其他内容。Future模式的图如下。客户端发送一个耗时请求,服务端不需等待该数据处理完成便立即返回一个伪造的代理数据,先去执行其他的若干操作后,再去调用服务器已经完成组装的真实数据。该模原创 2017-04-18 21:38:24 · 2887 阅读 · 0 评论 -
有界、无界队列对ThreadPoolExcutor执行的影响
Java提供了4钟线程池:newCachedThreadPoolnewFixedThreadPoolnewSingleThreadExecutornewScheduledThreadPool你可以通过Executors来实例化这四种线程池。查看源码会发现,这四种线程池都直接或者间接获取的ThreadPoolExecutor实例 ,只是实例化时传递的参数不一样。所以如果j原创 2017-05-18 20:08:05 · 24555 阅读 · 5 评论 -
interrupt、interrupted 、isInterrupted、InterruptedException
interruptinterrupt方法用于中断线程。调用该方法的线程的状态为将被置为"中断"状态。注意:线程中断仅仅是置线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态并做处理。一旦线程的中断状态位被置为“中断”,就会抛出interruptedException异常。interrupted 和isInterruptedinterruptted实现:p原创 2017-05-22 23:04:00 · 2988 阅读 · 0 评论 -
并发工具类:等待多线程完成的CountDownLatch,和join的区别
CountDownLatchCountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。CountDownLatch用给定的计数初始化 CountDownLatch。调用countDown()方法,计数减1。在当前计数到达零之前,调用await()方法的线程会一直受阻塞。当前计数到达0之后,会释放所有等待的线程,调用await()的原创 2017-05-24 22:00:34 · 3374 阅读 · 1 评论 -
DelayedQueue队列
DelayQueue是一个无界的BlockingQueue,用于存储实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期时间最长。注意:不能将null元素放置到这种队列中。下面先看一个例子:/** * DelayQueue需要存储的对象的类,实现Delayed接口,重写compareTo和getDelay方法 */class Del...原创 2018-02-22 20:23:55 · 560 阅读 · 0 评论 -
java锁使用总结
一.加锁方式1.synchronized修饰方法 public synchronized void synMethod() {...}//锁为所在类的对象或者public static synchronized void synMethod() {...}//锁为所在类的class对象2.synchronized代码块,所在的类的对象做为锁synchronized(this){...}3原创 2018-01-14 14:01:13 · 2949 阅读 · 0 评论