我有兩個同步函數的類。這意味着如果thread-0
執行proc1()
和thread-1
想要做proc1()
相同,它將等待thread-0
以proc1()
完成。請糾正我,如果我錯了。兩個函數中的synchronized指令是否意味着它們都可用於一個線程?
但是如果thread-0
執行proc1()
和thread-1
想要執行proc2()
?如果thread-1
需要等待proc1()
將由thread-0
完成?
換句話說 - 同步函數在類對象級別或只是函數級別同步?
public class MyClass
{
public synchronized void proc1()
{
...
}
public synchronized void proc2()
{
...
}
}
這是您可以自己嘗試的例子之一。 –
不知道我可以,因爲你永遠不知道什麼時候系統會決定切換到另一個線程。 – vico
在這種情況下,你當然可以。如果你想用兩個線程進行測試,並在每種方法中進行睡眠,你會注意到兩個線程都進入睡眠狀態,或者一個線程進入睡眠狀態。 –