1、synchronized关键字
两种用法:
synchronized方法:
public synchronized void mutiThreadAccess();
synchronized代码块:
synchronized(syncObject) {
//访问syncObject的代码
}
2、wait()方法和notify()方法
3、Lock
lock():
以阻塞方式获得锁。获得立即返回true,未获得等待,直至获得为止。
tryLock():
以非阻塞方式获得锁。尝试去获取锁,若获得立即返回true,未获得立即返回false。
tryLock(long timeout, TimeUnit unit):
若获得锁立即返回true,否则等待参数给定的时间单元,
等待过程中,若获得锁,返回true,若等待超时,返回false。
lockInterruptibly():
若获得锁,立即返回,若未获得,当前线程进入休眠状态,直至获得锁,或被别的线程中断。