目录
2.2 synchronized关键字 与 ReentrantLock类的区别
一. Callable接口
1.1 Callable接口介绍
1.2 Callable接口 与 Runnable接口
1.3 Callable接口的使用
二. ReentrantLock类
2.1 lock() unlock() trylock()
lock(): 加锁
unlock(): 解锁 (需要注意unlock不被调用的问题, 也就是线程提前终止)
trylock(): 不会阻塞, 加锁成功,返回true; 加锁失败, 返回false. 调用者根据返回值来决定下一步该做什么.
2.2 synchronized关键字 与 ReentrantLock类的区别
三. Semaphore信号量
Semaphore(信号量), 描述了某种可用资源的个数.
3.1 PV操作
申请一个资源, 计数器就会 +1. acquire
释放一个资源, 计数器就会 -1. release
注意: 可用资源个数为0时, 再继续申请, 就会阻塞.
3.2 二元信号量
四. CountDownLatch类
使用多线程, 经常将一个大任务拆分成多个小任务, 从而提升程序的运行效率.