Банальный вопрос по потокам

Если мой worker-класс наследуется от Thread и в нем есть public-метод, который вызывается из основного потока, то метод будет выполнен в основном потоке, или как? И если верно, что в основном, то вот ещё вопрос поконкретнее: как в этом случае избежать fail-fast поведения итераторов, если мне нужно в один ArrayList дописать содержимое второго (которое из главного потока приходит), а в этот момент сам поток по идее занимается обработкой евонного, ArrayList'a-первого, содержимого?
Кроме синхронизации ничего в ум не приходит, но думаю она негативно повлияет на скорость обработки (в worker'ы данные довольно часто будут поступать из основного потока, который ввод), так что если есть альтернативы — ткните носом, прошу вас.
  • Вопрос задан
  • 4249 просмотров
Решения вопроса 1
SSiarhei
@SSiarhei
Если вы не сильно разбираетесь в потоках, синхронизациях итд (а судя по первому вопросу это так), то я бы вам посоветовал как вариант использовать потокобезопасные коллекции из пакета java.util.concurrent.

Ну или самому писать синхронизацию.

p.s. если метод явно вызывать из основного потока, естественно он в нем и будет выполнятся. Неважно в каком классе он объявлен.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Xazzzi Автор вопроса
ಠ_ಠ
workDoNow не используется нигде, помимо потока-worker'a. У каждого воркера workDoNow собственный, как и временный массив. Поскольку ни чтение ни запись из других потоков в workDoNow конкретного потока не ведется, надобности дополнительно синхронизировать его не вижу.
За последнее вам отдельно спасибо — тема интересная, прочту на досуге.
Вообщем-то вопрос решен, если и остались некоторые косяки в коде, то раньше чем пока моя кучка классов не вырастет в приложение их я не найду. Спасибо всем вышеотписавшимся.

UPD: Промахнулся с ответом, это в ветку выше.
Ответ написан
Комментировать
Colwin
@Colwin
Ведущий Java-разработчик
если и остались некоторые косяки в коде, то раньше чем пока моя кучка классов не вырастет в приложение их я не найду.


<irony>Вы расписываетесь, что вы — быдлокодер?</irony> :-)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы