|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Доброе время суток. Подскажите, решаема ли задача по создании такой модели: Есть множество потоков. Нужно, чтобы один из потоков занимался тем, что вызывал определенные методы из других потоков, используя их ИД, либо имени. Либо, каким-то образом, давал знать этому потоку, чтоб тот выполнил свой метод ( возможно, используя переменную в целевом потоке). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 19:34 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Lemkoleg, В тех потоках разве код не выполняется в данный момент времени? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 19:52 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Petro123, Выполняется ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 19:53 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
LemkolegPetro123, Выполняетсятогда не понял смысла в задаче. Пример, 10 потоков сжимают 10 фильмов из avi в mpeg. И тут вы решили их тормознуть другой задачей? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 20:06 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Petro123, Вот именно. Или, хотя-бы, уведомить их каким-то образом. Как вариант, инициализировать переменную в целевом потоке. Целевой поток может просматривать значение этой переменной, время от времени ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 20:09 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Lemkoleg, Если напр. Цикл в потке и проверка переменной флага , то будет выход из цикла и поток закончится на сотом кадре фильма. Это надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 23:22 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Petro123, Ну, не совсем. interrupt() не очень подходит. В идеале, все ж таки, было бы здорово присвоить значение в переменной в целевом потоке. А он уж сам опрашивал ее, когда ему было бы удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 23:50 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Petro123, как-бы отправить сообщение потоку. А лучше объект. Возможно ли такое... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 23:55 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Lemkoleg, Делай. В чем проблема то переменную завести? По взрослому Cancelled token. По простому переменная. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 23:57 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
LemkolegPetro123, как-бы отправить сообщение потоку. А лучше объект. Возможно ли такое...начни с переменной. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 23:57 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Petro123, Извиняюсь."Cancelled token" - что это? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 00:10 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Petro123, Все, нашел. Большое спасибо. Это уже что-то. Может, поможете с объектом? В идеале должно быть так. В целевом потоке есть очередь. Допустим ConcurrentSkipListMap. Поток, обработавший объект, ложит его в эту коллекцию Целевой же поток, по мере необходимости, опрашивает ее, и получает объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 00:29 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
LemkolegPetro123, Все, нашел. Большое спасибо. Это уже что-то. Может, поможете с объектом? В идеале должно быть так. В целевом потоке есть очередь. Допустим ConcurrentSkipListMap. Поток, обработавший объект, ложит его в эту коллекцию Целевой же поток, по мере необходимости, опрашивает ее, и получает объект. Почитайте про дизайн патерн Producer/Consumer. Наиболее классический пример это проблема Дейскстры "Спящий Парикмахер". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 01:15 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
LemkolegПоток, обработавший объект, ложит его в эту коллекцию Целевой же поток, по мере необходимости, опрашивает ее, и получает объектне делайте объекты под потоки. Делайте кусок работы, потом стартуйте поток. Нарезать задачу и стартовать поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 07:03 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
LemkolegВ идеале должно быть так.вы не обосновали чем пул потоков не подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 07:25 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Petro123, Потому что, обьект нужен работающему потоку. Не одни раз ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 10:57 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
LemkolegPetro123, Потому что, обьект нужен работающему потоку. Не одни развыше говорил. Работающему невозможно. Можно прервать выполняющийся поток. Ферштейн? Если у тебя для потока не все готово, не стартуй его. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 11:18 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Мне тоже кажется что проблема накручена. Не настаиваю, но если обьясните подробно задачу, может и найдем сообща нормальное решение. Пока извините, это похоже на сумбур и велосипед ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 11:40 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
забыл ник, Попробую описать. Есть поток, пишущий-читающий в файл. Строго по одному потоку на файл. Из файла он получает зашифрованный массив байтов. Часть этого массива остается в потоке, т.к. ему известно, что с этой частью ему делать. А вторую часть отдает потоку ( через LinkedBlockingQueue) другому потоку, который отсылает эту часть на другой сервер. До сюда проблем нет. Как только обработанный массив возвращается пишущему-читающему потоку, он должен вернуть его в изначальный поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 12:57 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Lemkolegзабыл ник, Попробую описать. Есть поток, пишущий-читающий в файл. Строго по одному потоку на файл. Из файла он получает зашифрованный массив байтов. Часть этого массива остается в потоке, т.к. ему известно, что с этой частью ему делать. А вторую часть отдает потоку ( через LinkedBlockingQueue) другому потоку, который отсылает эту часть на другой сервер. До сюда проблем нет. Как только обработанный массив возвращается пишущему-читающему потоку, он должен вернуть его в изначальный поток.ну и нагородил монстра. LemkolegКак только обработанный массив возвращается пишущему-читающему потоку, Т.е.тот поток что отправлял по http? строку мегабайт на сервер в сети ждет ответа? Или сокет сервер пишем? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 13:07 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Petro123, Оправил массив байтов. Хотя, какая разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 13:15 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Petro123, Есть один пишущий - читающий поток, связанный с сервером. Он и должен, каким-то образом, вернуть первоначальному потоку вернувшийся массив. Т.к. только в этом потоке известно, что дальше делать с массивом. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 13:18 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
Lemkoleg, Свой сокет сервер пишем. Несколько потоков ввода-вывода на сокете Мог бы сразу сказать. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 13:24 |
|
Вызов метода из другого потока по ид потока
|
|||
---|---|---|---|
#18+
А почему такая архитектура? Вообще держать потоки невыгодно и немасштабируемо. Я так понимаю что вся соль в "Часть этого массива остается в потоке" Почему не сохранить его промежуточно на диск например, и когда придет ответ запустить Runnable с ссылкой на место на диске где сохранена эта часть? В целом я бы двигался к отделению бизнес-логики от утилитной(в вашем случае потоки, шедулинг, очереди и тд). Какие-то соображения по секьюрити или видимости мб? Я бы строил систему примерно так - 1) Есть три типа тасков - a) вычитать файл и сохранить промежуточные данные, из остальных данных составить message и положить его в queue b) Взять таск из queue отослать его на сервер, подождать ответ, сделать из него месседж и положить во вторую queue c) взять месседж из второй queue, вычитать первую часть массива и завершить весь цикл. Можно таски b и c объединить, но так как b блокирующий, это не есть гуд, я бы выделил для них различные пулы. 2) Есть две очереди(возможно 3, если файлы добавляются динамически) 3) Есть три пула, для каждого типа задачи. 4) Есть два коорднатора, Мониторят каждый свою queue и при поступлении месседжей, конструируют Runnable и посылают в пул Это если смотреть низкоуровнево. В принципе задача хорошо ложится на акторную модель, потому можно посмотреть также на Akka, если видите много возни с вариантом выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2018, 13:40 |
|
|
start [/forum/topic.php?fid=59&msg=39735816&tid=2121636]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 158ms |
0 / 0 |