根据我的理解,非静态方法上的同步将在对象级别被阻塞,而静态方法上的同步将在类实例级别上被阻塞。
在此基础上,我对各种情况的理解如下:
请帮我核实一下。
发布于 2013-12-30 12:53:16
我想可以更简单地解释
1)当线程进入同步实例方法时,其他线程都不能输入同一实例的任何同步实例方法。
2)当线程进入同步静态方法时,其他线程都不能输入同一类的任何同步静态方法。
发布于 2013-12-30 12:53:14
静态同步方法只锁定表示该类的class实例。锁定类不会阻止任何其他方法,例如非静态方法。
例如:
class MyClass {
public static synchronized void method() {
// something
}等于
class MyClass {
public static void method() {
synchronized(MyClass.class) {
// something
}
}发布于 2015-01-08 10:15:46
有两种类型的锁:对象级别和类级别。
对象级锁适用于非静态同步方法.每个对象在使用该方法时都有一个锁,对象首先获取该锁,然后执行该方法中的代码。
类级锁适用于静态同步方法。每个类都有一个锁,该锁在调用同步静态方法时使用。
以下是你的问题的答案:
https://stackoverflow.com/questions/20839936
复制相似问题