在多线程的情况下,为了保证同一变量的唯一性和确定性。要加入同步锁。具体用法百度。
1. synchronized关键字:代码块同步和方法块同步。
本质:都是对java对象监视器的操作,java对象都有自己的监视器。
2. ReentrantLock锁:
JAVA SE5.0之后,Lock接口,锁获取与释放的可操作性,可中断的获取锁以及超时获取锁。
3. 重入锁:Java里面内置锁(synchronized)和Lock(ReentrantLock)都可重入。自己可以再次获取自己的内部锁。
4. 公平锁:CPU在调度线程的时候是在等待队列里随机挑选一个线程,是不公平的。
synchronized非公平锁:导致饥饿现象
ReentrantLock锁是公平锁。
5. 可中断锁:synchronized不是可中断锁,而Lock是可中断锁。
6. 读写锁:读锁和写锁,多个线程之间的读操作可以并发进行。