- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 线程池使用和介绍
API使用和介绍newFixedThreadPool适合场景:执行长期的任务,性能好很多底层都是ThreadPoolExecutor,其中阻塞队列可以看我的阻塞队列文章.1、创建一个定长线程池,可控制线程最大并发数,超过的线程会在队列中等待。2、newFixedThreadPool创建的线程池corePoolSize和maximumPoolSize值是想等的,它使用的LinkedBlo...
2019-12-28 19:41:07 164
原创 JAVA并发包阻塞版线程通讯生产消费者模式例子
前面有我写了个“传统生产消费者模式例子” 传统版需要自己控制等待,唤醒等操作细节同时需要兼顾效率和线程安全,而并发包下的BlockingQueue我们不需要关心什么时候需要阻塞线程,什么时候需要唤醒线程,因为这一切BlockingQueue都给一手包办了。本例子所涉及到的知识点volatile/CAS/AtomicInteger/BlockQueue/线程交互/原子引用,需要了解详情可以看下我单...
2019-12-22 20:26:37 100
原创 Synchronized和Lock区别详解
1构成Synchronized是关键字属于JVM层面。Lock是具体类(java.util.concurrent.locks.Lock)是API层面的锁。2使用方法Synchronized不需要用户去手动释放锁,当Synchronized代码执行完后系统会自动让线程释放对锁的占用。ReentrantLock则需要用户去手动释放锁若没有主动释放锁,就有可能导致出现死锁现象。需要lock()和...
2019-12-22 15:47:45 138
原创 传统生产消费者模式例子
传统生产消费者模式例子这里写的是传统版还有一版是阻塞队列版,这里的例子可以和阻塞队列版对比。下面我们来做一道小需求题“一个初始值为零的变量,两个线程对其交替操作,一个加1一个减1,执行5次”。代码如下:import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java...
2019-12-20 22:20:43 122
原创 SynchronousQueue 同步队列介绍
SynchronousQueue 同步队列SynchronousQueue 没有容量,不存储元素的阻塞队列,也即单个元素的队列,每一个put操作必须要等待一个take操作,否则不能继续添加元素,反之亦然。代码演示如下import java.util.concurrent.BlockingQueue;import java.util.concurrent.SynchronousQueue;...
2019-12-20 18:39:16 314
原创 ArrayBlockingQueue 阻塞队列介绍
阻塞队列,阻塞队列在数据结构中如图:线程1往阻塞队列添加元素,而线程2从阻塞队列中移除元素,当阻塞队列是空时,从队列中获取元素操作将会被阻塞。...
2019-12-20 16:00:46 300
原创 Semaphore使用场景和详解
Semaphore 信号量主要用于两个目的,一个是用于多个共享资源的互斥使用,另一个用于并发线程数量的控制。下面我们模拟高并发多个资源对多个资源,假设有3个车位,有六台车子抢占车位如何操作,代码如下:import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit;public class Semapho...
2019-12-16 20:24:27 1365
原创 CyclicBarrier使用场景
CyclicBarrierCyclicBarrier的字面意思是可循环(Cyclic)使用的屏障(Barrier),它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活,线程进入屏障通过CyclicBarrier的await()方法。白话讲CountDownLatch是减法倒计时,CyclicBarrier...
2019-12-16 15:10:32 537 3
原创 Enum使用场景及技巧
Enum运用这里只介绍enum的使用场景和技巧。例子秦国灭六国废话不多说上代码:import lombok.Getter;public enum EnumDemo { ONE(1,"齐"),TWO(2,"楚"),THREE(3,"燕"),FOUR(4,"赵"),FIVE(5,"魏"),SIX(6,"韩"); @Getter private Integer retCode...
2019-12-16 11:21:06 1168
原创 CountDownLatch使用
CountDownLatch 使用场景CountDownLatch 倒记时器 过多介绍就不描述了,这里只描述使用场景。首先有个需求,教室里有7个人,上完课后陆续离开回家,班长负责最后关窗锁门。我们来用代码实现下public class CountDownLatchDemo { public static void main(String[] args) { //模拟...
2019-12-16 11:12:49 96
原创 java ReentrantLock,synchronized,spinlock,ReentrantReadWriteLock使用介绍
公平和非公平锁
2019-12-15 11:28:25 175
原创 java集合ArrayList,set,map为什么不安全详解
java集合中,ArrayList,HashSet,HashMap线程不安全详细介绍。
2019-12-06 22:44:10 184
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人