Java提供了三种实现同步机制的方法:
(1)synchronized 关键字
Java语言中,每个对象都有一个对象锁与之关联,该锁表明对象在任何时候只允许被一个线程所拥有,当一个线程调用一段synchronized代码时,需要先获取这个锁,然后去执行相应的代码,执行结束,释放锁。
①synchronized 方法
在方法生命前加上synchronized关键字修饰。当一个方法的方法体比较大时,为提高程序的效率,可以使用synchronized块。
②synchronized 块
语法:
synchronized ( syncObject){
//访问syncObject的代码;
}
(2)wait() 和 notify() 方法
(3)Lock
①lock():以阻塞方式获得锁
②tryLock():以非阻塞方式获取锁,尝试性获取一次,返回true/false。
③tryLock(long timeout, TimeUnit unit):设定等待时间获取锁,超市返回false。
④lockInterruptibly():