在Java中,线程调用同步方法是否使用同一对象预先占用另一个线程,但以非同步方式?线程调用synchronized方法是否抢先使用同一对象但不同步的另一个线程?
此外,当一个线程正在调用同步方法或同步块时,线程是否显式拥有整个对象?
在Java中,线程调用同步方法是否使用同一对象预先占用另一个线程,但以非同步方式?线程调用synchronized方法是否抢先使用同一对象但不同步的另一个线程?
此外,当一个线程正在调用同步方法或同步块时,线程是否显式拥有整个对象?
第一个问题:没有
第二个问题不能回答,因为“拥有”,没有明确界定。
在Java中,一个线程调用,同步方法,抢先使用同一个对象,但以非同步方式的另一个 ?
不,一个线程(假设没有数据竞争/竞争条件)不知道另一个线程在同步之外做了什么。
此外,当一个线程正在调用同步方法或同步块时,线程是否显式拥有整个对象?
如果你自己的意思是相互排斥,那么就不是,它只拥有同步区域的所有权。
http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html – Holger