📅  最后修改于: 2023-12-03 14:50:05.770000             🧑  作者: Mango
关键字 synchronized 可用于以下类型的块:
为了保证多线程环境下的数据同步和一致性,Java提供了关键字 synchronized
。它可以用于方法、静态方法以及代码块。下面我们详细介绍每个类型的块如何使用 synchronized 关键字。
实例方法:
实例方法是指属于对象实例的方法。使用 synchronized 关键字修饰实例方法时,该方法在被调用时会获取当前对象的锁,其他线程将无法同时访问该方法,直到锁释放。如下所示:
public synchronized void doSomething() {
// 该方法的内容被锁定,其他线程无法同时访问
// ...
}
静态方法:
静态方法是指属于类本身而不是对象实例的方法。使用 synchronized 关键字修饰静态方法时,该方法会获取类的锁,其他线程无法同时调用该方法,直到锁释放。如下所示:
public static synchronized void doSomething() {
// 该静态方法的内容被锁定,其他线程无法同时访问
// ...
}
静态方法中的代码块:
在静态方法中,我们可以使用 synchronized 关键字来修饰一段代码块。synchronized 关键字将获取类的锁,确保其他线程无法同时访问该代码块,直到锁释放。如下所示:
public static void doSomething() {
synchronized (ClassName.class) {
// 该代码块的内容被锁定,其他线程无法同时访问
// ...
}
}
请注意,静态类本身是不可行的选择,因为不能直接对类使用 synchronized 关键字。只能锁定该类的静态方法或静态代码块。
以上是关于关键字 synchronized 在不同类型的块中使用的介绍,它可以帮助我们实现线程安全的代码。