synchronized 用过吗?怎么使用?
在 Java 中,synchronized 是最常用的锁,它使用简单,并且可以保证线程安全,避免多线程并发访问时出现数据不一致的情况。
随着 JDK 版本的进化,synchronized 的性能也得到了进一步的提升,不再像以前样重量级了。
synchronized 可以用在方法和代码块中。
①、修饰方法
public synchronized void increment() {
this.count++;
}
当在方法声明中使用了 synchronized 关键字,就表示该方法是同步的,也就是说,线程在执行这个方法的时候,其他线程不能同时执行,需要等待锁释放。
如果是静态方法的话,锁的是这个类的 Class 对象,因为静态方法是属于类级别的。
public static synchronized void increment() {
count++;
}
②、修饰代码块
public void increment() {
synchronized (this) {
this.count++;
}
}
同步代码块可以减少需要同步的代码量,颗粒度更低,更灵活。synchronized 后面的括号中指定了要锁定的对象,可以是 this,也可以是其他对象。
THE END
暂无评论内容