说一说对synchronized的理解
Java中,synchronized是一种关键字,用于实现线程同步
- 当一个方法/代码块被synchronized修饰时,它将成为一个临界区,同一时刻只能由一个线程访问,其他线程必须等待当前线程退出临界区才进入。确保多个线程在访问共享资源时不会产生冲突。
- synchronized可用于方法/代码块。
- 当应用于方法时,整个方法被锁定;
- 当应用于代码块时,只有该代码块被锁定。
- 这样做的好处是,可以选择性地锁定对象的一部分,而不是整个方法。
- synchronized实现,依赖于软件层面上的JVM
- 在Java1.6, synchronized进行了优化,有适应自旋,锁消除,锁粗化,轻量级锁及偏向锁
- Java1.7 1.8也有优化
- synchronized等待锁时是不能被Thread.interrupt中断的。
public synchronized void synchronizedMethod(){
// 在这个方法内部的代码被锁定,同一时间只有一个线程能够执行它
}
public void someMethod(){
synchronized(this){
//这个代码块被锁定,同一时间只有一个线程能够执行它
}
}

浙公网安备 33010602011771号