Java中的线程澄清

时间:2014-01-28 20:43:44

标签: java multithreading thread-safety synchronized

在我们扩展Thread而不是实施Runnable时是否可以同步该方法?

我知道当我们使用Runnable时,它是可能的。但是当我们Thread t1 = new Thread();时,可以这样做吗?

如何同步?

2 个答案:

答案 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)