Java 并发编程:一文了解 synchronized 的使用
warning:
这篇文章距离上次修改已过180天,其中的内容可能已经有所变动。
在Java中,synchronized
关键字用于控制多线程对共享资源的访问。它可以用来修饰方法,以及代码块,以保证在同一时刻只有一个线程可以执行被synchronized
修饰的部分。
以下是synchronized
关键字的几种使用方式:
- 修饰实例方法:
public synchronized void increase() {
// 操作共享资源的代码
}
- 修饰静态方法:
public synchronized static void increase() {
// 操作共享资源的代码
}
- 修饰代码块:
public void increase() {
synchronized(this) {
// 操作共享资源的代码
}
}
- 修饰静态代码块:
public static void increase() {
synchronized(MyClass.class) {
// 操作共享资源的代码
}
}
在实例方法和代码块的情况下,锁定的是对象实例(this)。在静态方法和静态代码块的情况下,锁定的是类对象(MyClass.class)。
注意:过度使用synchronized
可能会导致性能问题,因为它会引起线程阻塞和唤醒,从而降低程序的执行效率。在选择使用synchronized
时,应当尽量减小锁的粒度,或者使用ReentrantLock
等更灵活的同步工具。
评论已关闭