在我们扩展Thread
而不是实施Runnable
时是否可以同步该方法?
我知道当我们使用Runnable
时,它是可能的。但是当我们Thread t1 = new Thread();
时,可以这样做吗?
如何同步?
答案 0 :(得分:4)
同步与定义方法的类正交。您可以在任何方法中使用synchronized
。它只是意味着有一个互斥锁保护代码块。
public class MyTotallyUnspecialClass {
synchronized public void someTotallyUnspecialMethod() {
// this method is synchronized, with a mutex on "this"
}
}
答案 1 :(得分:0)
无论是扩展Thread还是实现Runnable,对同步都没有影响。当你同步一个方法时,你得到一个OBJECT而不是线程的锁 - 所以它确实没关系。有很多SO主题讨论这两种方法之间的区别(扩展线程与实现Runnable)