信号量
信号量,有时又称为信号灯,是在多个线程环境下使用的一种设施,它负责协调各个线程,以保证它们能够正确,合理的使用公共资源。
线程池
线程池主要用来解决线程生命周期开销问题和资源不足问题,通过对多个任务重复使用线程,线程创建的开销就被分摊到多个任务上了,而且由于在请求到达时线程已经存在,所以消除了线程创建所带来的延迟。这样就可以立即为请求服务,使用应用程序响应更快
通过适当的调整线程中的线程数目可以防止出现资源不足的情况
当一个服务器接受到大量短小线程的请求时,使用线程池技术时非常合适的,它可以大大减少线程的创建和销毁次数,提高服务器的工作效率
Lock接口
lock接口提供了与Synchronized关键字似的同步功能,但需要在使用时手动获取锁和释放锁。
ThreadLocal
可重入的独占锁,该对象与synchronized关键字有着相同表现和更清晰的语义,而且还具有一些扩展的功能,可重入锁被最近的一个成功lock的线程占有,该类有一个重要特性体现在构造器上,构造器接受一个可选参数,是否是公平锁,默认是非公平锁。
公平锁:
先来一定先排队,一定先获取锁
非公平锁:
不保证上述条件非公平锁的吞吐量更高
原子操作类
原子操作类相当于泛化的volatile变量,能够支持源自读取-修改-写操作。
生产者-消费者模式
简单地说就是一个模块生产数据,一个模块处理数据
生产数据的模块就是生产者,处理数据的模块就是消费者。