可能重复:
How do synchronized static methods work in Java?什么是静态方法同步吗?
我在想,如果同步的静态方法使用会发生什么。该类是否获得了该方法的锁定?这与非静态方法的同步有何不同?
感谢
可能重复:
How do synchronized static methods work in Java?什么是静态方法同步吗?
我在想,如果同步的静态方法使用会发生什么。该类是否获得了该方法的锁定?这与非静态方法的同步有何不同?
感谢
是,类“被”锁而不是实例(如布鲁诺指出,这个术语是不精确的。线程使用任一类对象或实例作为锁定对象获取锁)。也就是说,如果这些方法在各自的实例上同步,则可以有3个线程同时执行3个同步方法。如果方法在类上同步,则只有一个线程可以执行它。
那么同步非静态方法有什么意义呢?对不起,如果这是一个愚蠢的问题:S – blaa 2011-03-08 00:03:18
同步实例方法可防止两个线程尝试对_same_实例进行操作。线程1和线程2都有实例A的引用。 – 2011-03-08 00:12:32
“类获取锁而不是实例”?!一个班级永远不会锁定。它是一个“获取”锁定的线程,并且这些线程与对象关联。 – 2011-03-08 02:37:15
This question对上述问题有许多高质量的答案。
同步的静态方法锁定类,而不是对象。 http://download.oracle.com/javase/tutorial/essential/concurrency/locksync.html – CMR 2011-03-08 00:05:51