随笔分类 - JAVA并发
摘要:并发设计模式 一、终止线程的设计模式 思考:在一个线程 T1 中如何正确安全的终止线程 T2? 错误思路1:使用线程对象的 stop() 方法停止线程 stop 方法会真正杀死线程,如果这时线程锁住了共享资源,那么当它被杀死后就再也没有机会释放锁, 其它线程将永远无法获取锁 。 错误思路2:使用 S
阅读全文
摘要:Disruptor&Future&CompletableFuture 一、Disruptor Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒60
阅读全文
摘要:ForkJoin原理分析 一、任务类型 思考: 线程池的线程数设置多少合适? 我们调整线程池中的线程数量的最主要的目的是为了充分并合理地使用 CPU 和内存等资源,从而最大限度地提高程序的性能。在实际工作中,我们需要根据任务类型的不同选择对应的策略。 1.1 CPU密集型任务 CPU密集型任务也叫计
阅读全文
摘要:阻塞队列BlockingQueue 一、阻塞队列介绍 Queue接口 public interface Queue<E> extends Collection<E> { //添加一个元素,添加成功返回true, 如果队列满了,就会抛出异常 boolean add(E e); //添加一个元素,添加成
阅读全文
摘要:AQS之ReentrantReadWriteLock 一、 读写锁介绍 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁(读多写少)。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源(读读可以并发);但是如果一个线程想去写这些共享
阅读全文