2014-01-28 50 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" 
    } 
}