2014-01-28 55 views
1

當我們擴展Thread而不是執行Runnable時,是否可以同步該方法?Java中的線程說明

我知道,當我們使用Runnable時,這是可能的。但是當我們做Thread t1 = new Thread();時,這可以做到嗎?

它如何同步?

+0

能否請您提供(使用Runnable接口)代碼的例子嗎? –

+0

你可以用'Thread'完成所有的事情,'Runnable'可以完成所有的事情,除非你用'Thread'擴展一個類,否則你不能擴展任何其他的類。 –

回答

0

無論擴展Thread還是實現Runnable,對同步都沒有影響。當你同步一個方法時,你會得到一個對象的鎖而不是線程 - 所以它真的沒關係。有許多SO主題討論這兩種方法之間的區別(擴展線程與實現Runnable)

4

同步與定義該方法的類正交。您可以在任何方法中使用​​。這意味着有一個守護該代碼塊的互斥體。

public class MyTotallyUnspecialClass { 
    synchronized public void someTotallyUnspecialMethod() { 
     // this method is synchronized, with a mutex on "this" 
    } 
}