使用同步方法而不是同步块是否有优势?
有谁能举例说明同步方法优于同步块的优势吗? #1楼 可以使用反射API检查同步方法。 这对于测试某些合同可能很有用,例如 模型中的所有方法都已同步 。 以下代码段显示了Hashtable的所有同步方法: for (Method m : Hashtable.class.getMethods()) { if (Modifier.isSynchronized(m.getModifiers())) { System.out.println(m); } } #2楼 与线程同步。 1)永远不要在线程中使用synced(this),这是行不通的。 与(this)同步使用当前线程作为锁定线程对象。 由于每个线程都独立于其他线程,因此没有同步协调。 2)代码测试表明,在Mac上的Java 1.6中,方法同步不起作用。 3)Synchronized(lockObj),其中lockObj是在其上同步的所有线程的公共共享对象。 4)ReenterantLock.lock()和.unlock()工作。 参见Java教程。 以下代码显示了这些要点。 它还包含将替换ArrayList的线程安全Vector,以表明添加到Vector的许多线程不会丢失任何信息,而与ArrayList相同的线程可能会丢失信息。 0)当前代码显示由于竞争条件而导致的信息丢失A)注释当前标记为A的行,并取消注释其上方的A行,然后运行