说一说对synchronized的理解

Java中,synchronized是一种关键字,用于实现线程同步

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

public void someMethod(){
	synchronized(this){
		//这个代码块被锁定,同一时间只有一个线程能够执行它
	}
}
posted @ 2025-05-17 17:12  kuki'  阅读(12)  评论(0)    收藏  举报