当我们扩展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'扩展一个类,否则你不能扩展任何其他的类。 –