java.util.concurrent.*

1. java.util.concurrent.ArrayBlockingQueue
阻塞的Queue,允许多线程操作,这里的put Condition和get Condition分离(使用ReentrantLock),速度比使用单个锁速度快。
这是一个基于数组,先进先出,线程安全的集合类,其特色为可实现指定时间的阻塞读写,并且容量可限制.
2. java.util.concurrent.ReentrantLock
可重入锁,允许指定一个boolean参数,公平锁[FIFO],或者自由竟争.
一般调用newCondition()生成Condition,Condition可以调用await和signal[等待与唤醒]
当然也可以不使用只使用lock与unlock.
3. java.util.concurrent.ReentrantReadWriteLock
读写锁分享,在读多写少的场景可大幅提升读的性能.
4. java.util.concurrent.Future
该接口是用来表示结果是异步线程完成,其中方法提供确认任务是否完成,等待任务完成,检索完成后返回结果.
其经常与ExecutorService一起使用.
5. java.util.concurrent.Executor
一个对象执行提交的Runnable任务,这个接口提供一种方法解耦任务提交,任务执行.[任务调度]
6. java.util.concurrent.ExecutorService
扩展Executor,提供了任务池的功能,提交了任务终止,任务池关闭,批量提交任务,提交Runnable,Callable任务.
7. java.util.concurrent.Executors
工厂方法,返回Executor,ExecutorService,ScheduledExecutorService,ThreadFactory,Callable类定义.
Executors.newCachedThreadPool()
* API:
* 1. 创建一个线程池,根据需要创建新线程,但 将重用先前构造的线程当他们可用。
* 2. 这个线程池会提高性能,如果项目中都是一些执行周期比较短的异步任务.
* 3. 线程超过60秒没有使用,将会被移出缓存,因此这个线程池中没有任务,不会消耗资源
Executors.newScheduledThreadPool(5)
* API:
* 创建一个线程池可以调度任务在给定delay,或者定期执行

8. java.util.concurrent.FutureTask
该类实现Future接口,也实现了Runnable接口,所台可以执行Runnable接口,而这里使用Executors转化为Callable接口
同时也支持Callable接口.调用run()方法开始执行.
这可用于异步执行结果或取消任务的场景.
9. java.util.concurrent.ThreadPoolExecutor
线程池执行类,用来submit Runnable或者callable接口的类,每提交一个都会生成一个FutureTask实例,并调用start方法启动
invokeAll方法会批量调用异常线程,并等待他们都返回了,才返回结果.
10.java.util.concurrent.ScheduledExecutorService
ScheduledThreadPoolExecutor为其实现类execute方法默认为立即执行.当然也可以指定时间间隔循环执行.
11.java.util.concurrent.ScheduledFuture
这个接口主要是扩展了Future,添加了Delayed接口,指定时间延迟.
12.java.util.concurrent.ConcurrentHashMap
线程安全的HashMap实现.主要是对put/get操作使用了segment,key-value锁,而不是锁定整个列表
13.java.util.concurrent.CopyOnWriteArrayList
这是一个线程安全,并且在读操作时无锁的ArrayList. 写操作时使用可重入锁来保证线程安全,每次都会复制一份数组.读
操作不加锁,速度是快,但可能读的是脏数据.
14.java.util.concurrent.CopyOnWriteArraySet
这是基于CopyOnWriteArrayList实现,其唯一不同是不能重复.
15.java.util.concurrent.AtomicInteger
这是一个支持原子操作的Integer类。[实现同样的功能需要实现一个按顺序获取的id,必须在每次获取进行加锁]
这是基于CAS(CPU的原语)实现,简单的说就是由CPU比较内存位置上的值是否为当前值
16.java.util.concurrent.Semphore
这是并发包中提供的用于控制某资源同时被访问的个数的类,例如连接池要控制连接的个数
17.java.util.concurrent.CountDownLatch
这提供一个可用于控制多个线程同时开始某动作的类,其采用方式为减计数的方式,当计数为0时,位于await后的代码才会执行
18.java.util.concurrent.CyclicBarrer
当await数量到达了设定的数量后,才继续往下执行.
19.java.util.concurrent.Condition
这是一个接口,典型的实现有ReentrantLock.提供了一个newCondition方法,以便用户在同一个锁的情况下可以根据不同的情况执行
等待和唤醒
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值