同一个对象的两个不同的同步方法?

Jav*_*ser 9 java synchronization vector

我在类中有2个同步方法,比如method1()和method2().线程说"线程1"通过执行synchronized方法1()来保持对该类对象的锁定.另一个线程可以说"线程2",同时通过method2()访问锁定,同时"线程1"持有锁.

这种情况类似于java.util.Vector类,它具有同步的add()和remove()方法.请解释这个案子.

Bor*_*lid 10

不是synchronized.Java中的方法与将其主体包裹在synchronized (this)块中的整个方法相同.因此,如果一个线程在一个synchronized方法中,另一个线程不能同时在同一个对象上使用不同的synchronized方法.

与a相关的方式Vector是,您不希望某些代码尝试删除元素,而其他代码尝试添加元素.这是关键部分的概念; 你不仅不希望别人试图做你正在做的事情,你也不希望别人做一些会干扰的事情.