Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Многопоточное программирование / 11 сообщений из 11, страница 1 из 1
26.03.2016, 20:07
    #39201237
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное программирование
Всем привет! подскажите пожалуйста как управлять потоками?
Например у меня есть пул потоков (thread) каждый поток выполняет свою задачу, например первый получает данные из бд второй анализирует третий отправляет по почте. Потоки создаются при старте программы и ждут своей "участи" wait(). Менеджер потоков должен "разбудить" конкретный поток, тот который мне нужен в данный момент времени. Если я правильно понял, то метод notify() разбудит какой-то любой поток из пула с высшим приоритетом. а как разбудить нужный мне поток?
...
Рейтинг: 0 / 0
27.03.2016, 13:39
    #39201386
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное программирование
На каждую задачу - отдельные пулы отдельных потоков.
...
Рейтинг: 0 / 0
27.03.2016, 20:08
    #39201532
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное программирование
Dimitry Sibiryakov,

Программа одна пулы разные.
...
Рейтинг: 0 / 0
27.03.2016, 21:53
    #39201578
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное программирование
Mandarinкаждый поток выполняет свою задачу, например первый получает данные из бд второй анализирует третий отправляет по почте.т.к. задачи строго друг за другом, то такая постановка не подходит. Придумай параллельные задачи.
...
Рейтинг: 0 / 0
28.03.2016, 09:08
    #39201705
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное программирование
MandarinВсем привет! подскажите пожалуйста как управлять потоками?
Например у меня есть пул потоков (thread) каждый поток выполняет свою задачу, например первый получает данные из бд второй анализирует третий отправляет по почте. Потоки создаются при старте программы и ждут своей "участи" wait(). Менеджер потоков должен "разбудить" конкретный поток, тот который мне нужен в данный момент времени. Если я правильно понял, то метод notify() разбудит какой-то любой поток из пула с высшим приоритетом. а как разбудить нужный мне поток?
То что вы описали уже есть в JSE, называется ExecutorService с кучей вариантов реализации.
То что вы пытаетесь описать в более обширном масштабе называется Actor Model. Существует в виде разнообразных фреймверков, например RxJava.
...
Рейтинг: 0 / 0
28.03.2016, 13:41
    #39202049
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное программирование
Mandarin,

все не то.
wait-notify это один способ
пул потоков - это другой метод, считайте обертка вокруг wait-notify, чтобы не дергать потоки руками.

Пул содержит потоки, но в пуле исполняются не потоки а задачи, которые (как правило) не должны иметь ожидания и должны быть конечны.
...
Рейтинг: 0 / 0
28.03.2016, 13:46
    #39202060
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное программирование
Petro123т.к. задачи строго друг за другом+64Mandarinнапример первый получает данные из бд второй анализирует третий отправляет по почтеА что общего у этих потоков ? Есть ли какой-нибудь разделяемый ресурс ?
...
Рейтинг: 0 / 0
28.03.2016, 14:51
    #39202170
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное программирование
Mandarinу меня есть пул потоков (thread)
Mandarinпулы разные
Ты эта... определись один у тебя пул или таки разные. Если они разные, то утверждение
MandarinМенеджер потоков должен "разбудить" конкретный поток
не имеет смысла и его нужно заменить на "менеджер потоков должен разбудить первый попавшийся поток из конкретного пула", что и решается методом notify() - проблема решена.
...
Рейтинг: 0 / 0
28.03.2016, 15:06
    #39202188
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное программирование
Мне кажется что тут все проще и ТС испугался высоких материй. Это конечно мои домысливания но:

1) В случае если потоки выполняют взаимонезависимые задачи, то ТС просто надо понять разницу между Thread и Runnable. Скорее всего просто достаточно оформить параллельные задачи в Runnable и пулять их в ExecutorService когда надо. И никаких потоков будить не придется.
2) Если задачи взаимозависимые, то не совсем понятно зачем их тогда разделять, ну тут уже надо смотреть специфику задачи.
...
Рейтинг: 0 / 0
28.03.2016, 15:11
    #39202199
AndrykV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное программирование
Mandarin,
А можно совсем ламерский вопрос?
Ежели у вас все потоки выполняются последовательно, то зачем вообще городить огород с многопоточностью?
...
Рейтинг: 0 / 0
28.03.2016, 19:41
    #39202508
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное программирование
спасибо всем за наводящие вопросы, и подсказки. самое главное разобраться в себе и поставленной задаче :) я думаю то что в посоветовали будет более чем достаточно.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Многопоточное программирование / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]