Вопрос по темам - PullRequest
       2

Вопрос по темам

1 голос
/ 08 июля 2010

Я просто играю с потоками в Java. У меня есть класс, который реализует runnable.

public class MyThread implements Runnable{

   private boolean finished;
   //Other variables

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

Насколько я понимаю, каждый поток типа MyThread будет иметь собственную копию переменных-членов, и записи в эти переменные-члены не нужно синхронизировать. Это предположение верно? Если правильно, доступ к чему нужно синхронизировать? Может кто-нибудь захочет дать набросок или псевдокод.? Спасибо.

Ответы [ 3 ]

6 голосов
/ 08 июля 2010

Не обязательно. Вы можете создать несколько потоков, используя один и тот же экземпляр MyThread. Например:

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

Теперь в одном и том же объекте будет три потока, выполняющих код.

Я предлагаю вам переименовать MyThread, поскольку это не поток - это задача, которую должен выполнить поток. Это проясняет ситуацию (ИМО).

0 голосов
/ 08 июля 2010

Тракт с действительно большим индексом на параллелизме стоит прочитать (да, у него есть примеры).

0 голосов
/ 08 июля 2010
  • Каждый экземпляр MyThread является новым экземпляром, как и обычные классы и объекты.
  • Переменные переменных собственных типов копируются.Это означает, что изменение переменной в одном потоке не влияет на другой поток.Их не нужно синхронизировать.
  • Для объектов их ссылки копируются.Это означает, что два потока могут иметь ссылку на один и тот же объект.Если два потока манипулируют этим объектом одновременно, это может пойти не так.Следовательно, эти обращения должны быть синхронизированы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...