小识多线程

一、Java锁

1、同步锁:关键字synchronize。同一时刻,一个同步锁只被一个线程访问,通过synchronize来实现,是对竞争资源的互斥访问。

2、独占锁(可重入的互斥锁)

互斥:在一个时间点,只能被一个线程持有;可重入:可以被单个线程多次获取。是一种“不公平锁”。java中ReentrantLock实现独占锁。

3、公平锁

线程按照先来先得的规则,依次排序,公平锁的获取是独占锁的一种,Java中,ReetrantLock中有一个Sync类型的成员变量sync,它的实例为FairSync类型的时候,ReetrantLock为公平锁。设置sync为FairSync类型,只需——Lock lock = new ReetrantLock(true)。

4、读写锁

读写锁维护了一对相关锁,“读取锁”用于只读操作,它是“共享锁”,能同时被多个线程获取。“写入锁”用于写入操作,它是“独占锁”,只能被一个线程获取。Java中,读写锁ReadWriteLock接口的定义,其实现类是ReentrantReadWriteLock,包括内部类ReadLock和WriteLock。方法readLock()、writelock()分别返回读操作的锁和写操作的锁。

你可能感兴趣的:(小识多线程)