关于线程的问题

时间:2010-07-08 06:55:08

标签: java synchronization

我正在玩java中的线程。我有一个实现runnable的类。

public class MyThread implements Runnable{

   private boolean finished;
   //Other variables

   public void run(){
      //Thread code
   }
}

我的理解是MyThread类型的每个线程都有自己的成员变量副本,并且不需要同步对这些成员变量的写入。这个假设是否正确?如果正确,访问需要同步的内容?有人可以提供大纲或伪代码。感谢。

3 个答案:

答案 0 :(得分:6)

不一定。您可以使用MyThread的同一实例创建多个线程。例如:

MyThread x = new MyThread();
new Thread(x).start();
new Thread(x).start();
new Thread(x).start();

现在将有三个线程在同一个对象中运行代码。

我建议你重命名MyThread因为它不是一个线程 - 这是一个线程执行的任务。这使得它更清晰(IMO)。

答案 1 :(得分:0)

  • 每个MyThread实例都是一个新实例,就像普通的类和对象一样。
  • 复制本机类型的变量。这意味着在一个线程中更改变量对另一个线程没有任何作用。这些不必同步。
  • 对于对象,复制了引用。这意味着两个线程可能具有对同一对象的引用。如果两个线程同时操作该对象,则可能会变坏。因此,这些访问必须同步。

答案 2 :(得分:0)

concurrency上的真正大指数追踪非常值得一读(是的,它有例子)。