當我們擴展Thread
而不是執行Runnable
時,是否可以同步該方法?Java中的線程說明
我知道,當我們使用Runnable
時,這是可能的。但是當我們做Thread t1 = new Thread();
時,這可以做到嗎?
它如何同步?
當我們擴展Thread
而不是執行Runnable
時,是否可以同步該方法?Java中的線程說明
我知道,當我們使用Runnable
時,這是可能的。但是當我們做Thread t1 = new Thread();
時,這可以做到嗎?
它如何同步?
無論擴展Thread還是實現Runnable,對同步都沒有影響。當你同步一個方法時,你會得到一個對象的鎖而不是線程 - 所以它真的沒關係。有許多SO主題討論這兩種方法之間的區別(擴展線程與實現Runnable)
同步與定義該方法的類正交。您可以在任何方法中使用。這意味着有一個守護該代碼塊的互斥體。
public class MyTotallyUnspecialClass {
synchronized public void someTotallyUnspecialMethod() {
// this method is synchronized, with a mutex on "this"
}
}
能否請您提供(使用Runnable接口)代碼的例子嗎? –
你可以用'Thread'完成所有的事情,'Runnable'可以完成所有的事情,除非你用'Thread'擴展一個類,否則你不能擴展任何其他的類。 –