在Java中,線程調用同步方法是否使用同一對象預先佔用另一個線程,但以非同步方式?線程調用synchronized方法是否搶先使用同一對象但不同步的另一個線程?
此外,當一個線程正在調用同步方法或同步塊時,線程是否顯式擁有整個對象?
在Java中,線程調用同步方法是否使用同一對象預先佔用另一個線程,但以非同步方式?線程調用synchronized方法是否搶先使用同一對象但不同步的另一個線程?
此外,當一個線程正在調用同步方法或同步塊時,線程是否顯式擁有整個對象?
第一個問題:沒有
第二個問題不能回答,因爲「擁有」,沒有明確界定。
在Java中,一個線程調用,同步方法,搶先使用同一個對象,但以非同步方式的另一個 ?
不,一個線程(假設沒有數據競爭/競爭條件)不知道另一個線程在同步之外做了什麼。
此外,當一個線程正在調用同步方法或同步塊時,線程是否顯式擁有整個對象?
如果你自己的意思是相互排斥,那麼就不是,它只擁有同步區域的所有權。
http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html – Holger