Java中多线程同步的实现
为了保证每个线程都能正常执行的原子操作,java中引入线程同步机制有三种方式:
1.同步代码块:当多个线程使用同一个共享资源时,可以将处理共享资源的代码放在一个使用synchronized关键字来修饰的代码块中其语法格式如下:
synchronized(lock){
操作共享代码块
}
lock是一个锁对象,它可以使某一个线程抢夺到执行权后进入同步代码块执行其中的代码直到共享资源被处理完位置。
案列:
2.同步方法:在方法面前同样可以使用synchronized关键字来修饰,被修饰的方法为同步方法,它能实现同步同步代码块相同的功能其语法格式如下:
synchronized 返回值类型 方法名(参数列表){}
被synchronized修饰的方法在某一时刻只允许一个线程访问共享资源
案列:
3.Lock锁机制
Lock锁机制提供了比synchronized代码块和synchronized方法更广泛的锁定操作,Lock也有同步代码块、同步方法的功能相比之下Lock还有更精准的线程语义和性能,主要方法如下:
public void lock(): 加同步锁
public void unlock():释放同步锁
Lock接口有一个实现类ReentrantLock
案列:
最后的结果: