powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вызов метода из другого потока по ид потока
40 сообщений из 40, показаны все 2 страниц
Вызов метода из другого потока по ид потока
    #39735814
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток. Подскажите, решаема ли задача по создании такой модели:
Есть множество потоков. Нужно, чтобы один из потоков занимался тем, что вызывал определенные методы из других потоков, используя их ИД, либо имени. Либо, каким-то образом, давал знать этому потоку, чтоб тот выполнил свой метод ( возможно, используя переменную в целевом потоке).
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735816
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,
В тех потоках разве код не выполняется в данный момент времени?
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735817
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Выполняется
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735820
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegPetro123,
Выполняетсятогда не понял смысла в задаче.
Пример, 10 потоков сжимают 10 фильмов из avi в mpeg.
И тут вы решили их тормознуть другой задачей?
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735821
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Вот именно. Или, хотя-бы, уведомить их каким-то образом. Как вариант, инициализировать переменную в целевом потоке. Целевой поток может просматривать значение этой переменной, время от времени
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735858
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,
Если напр. Цикл в потке и проверка переменной флага , то будет выход из цикла и поток закончится на сотом кадре фильма.
Это надо?
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735863
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Ну, не совсем. interrupt() не очень подходит. В идеале, все ж таки, было бы здорово присвоить значение в переменной в целевом потоке. А он уж сам опрашивал ее, когда ему было бы удобно.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735866
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
как-бы отправить сообщение потоку. А лучше объект. Возможно ли такое...
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735867
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,
Делай. В чем проблема то переменную завести? По взрослому Cancelled token. По простому переменная.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735868
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegPetro123,
как-бы отправить сообщение потоку. А лучше объект. Возможно ли такое...начни с переменной.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735872
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Извиняюсь."Cancelled token" - что это?
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735879
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Все, нашел. Большое спасибо. Это уже что-то. Может, поможете с объектом? В идеале должно быть так. В целевом потоке есть очередь. Допустим ConcurrentSkipListMap. Поток, обработавший объект, ложит его в эту коллекцию Целевой же поток, по мере необходимости, опрашивает ее, и получает объект.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735887
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegPetro123,
Все, нашел. Большое спасибо. Это уже что-то. Может, поможете с объектом? В идеале должно быть так. В целевом потоке есть очередь. Допустим ConcurrentSkipListMap. Поток, обработавший объект, ложит его в эту коллекцию Целевой же поток, по мере необходимости, опрашивает ее, и получает объект.

Почитайте про дизайн патерн Producer/Consumer. Наиболее классический пример это проблема Дейскстры "Спящий Парикмахер".
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735908
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegПоток, обработавший объект, ложит его в эту коллекцию Целевой же поток, по мере необходимости, опрашивает ее, и получает объектне делайте объекты под потоки. Делайте кусок работы, потом стартуйте поток.
Нарезать задачу и стартовать поток.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735910
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegВ идеале должно быть так.вы не обосновали чем пул потоков не подходит?
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735974
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Потому что, обьект нужен работающему потоку. Не одни раз
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39735995
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegPetro123,
Потому что, обьект нужен работающему потоку. Не одни развыше говорил.
Работающему невозможно. Можно прервать выполняющийся поток.
Ферштейн?
Если у тебя для потока не все готово, не стартуй его.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736010
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне тоже кажется что проблема накручена. Не настаиваю, но если обьясните подробно задачу, может и найдем сообща нормальное решение. Пока извините, это похоже на сумбур и велосипед
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736062
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
Попробую описать. Есть поток, пишущий-читающий в файл. Строго по одному потоку на файл. Из файла он получает зашифрованный массив байтов. Часть этого массива остается в потоке, т.к. ему известно, что с этой частью ему делать. А вторую часть отдает потоку ( через LinkedBlockingQueue) другому потоку, который отсылает эту часть на другой сервер. До сюда проблем нет. Как только обработанный массив возвращается пишущему-читающему потоку, он должен вернуть его в изначальный поток.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736068
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkolegзабыл ник,
Попробую описать. Есть поток, пишущий-читающий в файл. Строго по одному потоку на файл. Из файла он получает зашифрованный массив байтов. Часть этого массива остается в потоке, т.к. ему известно, что с этой частью ему делать. А вторую часть отдает потоку ( через LinkedBlockingQueue) другому потоку, который отсылает эту часть на другой сервер. До сюда проблем нет. Как только обработанный массив возвращается пишущему-читающему потоку, он должен вернуть его в изначальный поток.ну и нагородил монстра.
LemkolegКак только обработанный массив возвращается пишущему-читающему потоку,
Т.е.тот поток что отправлял по http? строку мегабайт на сервер в сети ждет ответа?
Или сокет сервер пишем?
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736077
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Оправил массив байтов. Хотя, какая разница?
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736078
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Есть один пишущий - читающий поток, связанный с сервером. Он и должен, каким-то образом, вернуть первоначальному потоку вернувшийся массив. Т.к. только в этом потоке известно, что дальше делать с массивом.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736087
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,
Свой сокет сервер пишем.
Несколько потоков ввода-вывода на сокете
Мог бы сразу сказать.
Удачи!
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736098
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему такая архитектура? Вообще держать потоки невыгодно и немасштабируемо. Я так понимаю что вся соль в "Часть этого массива остается в потоке" Почему не сохранить его промежуточно на диск например, и когда придет ответ запустить Runnable с ссылкой на место на диске где сохранена эта часть?
В целом я бы двигался к отделению бизнес-логики от утилитной(в вашем случае потоки, шедулинг, очереди и тд). Какие-то соображения по секьюрити или видимости мб? Я бы строил систему примерно так -
1) Есть три типа тасков - a) вычитать файл и сохранить промежуточные данные, из остальных данных составить message и положить его в queue b) Взять таск из queue отослать его на сервер, подождать ответ, сделать из него месседж и положить во вторую queue c) взять месседж из второй queue, вычитать первую часть массива и завершить весь цикл. Можно таски b и c объединить, но так как b блокирующий, это не есть гуд, я бы выделил для них различные пулы.
2) Есть две очереди(возможно 3, если файлы добавляются динамически)
3) Есть три пула, для каждого типа задачи.
4) Есть два коорднатора, Мониторят каждый свою queue и при поступлении месседжей, конструируют Runnable и посылают в пул


Это если смотреть низкоуровнево.
В принципе задача хорошо ложится на акторную модель, потому можно посмотреть также на Akka, если видите много возни с вариантом выше.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736178
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegНужно, чтобы один из потоков занимался тем, что вызывал определенные методы из других потоков
Поциенту изучать методы wait и notify, а так же конструкцию synchronize.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736401
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555LemkolegНужно, чтобы один из потоков занимался тем, что вызывал определенные методы из других потоков
Поциенту изучать методы wait и notify, а так же конструкцию synchronize.

Пассажир уже знаком с очередью с блокировкой, которая вполне решает базовые методы синхронизации. Походу в архитектуре нужна вторая очередь с блокировкой для возврата обработанной части из первой очереди.

Вообще походу модель видется примерно так первая очередь как Prod/Cos и вторая топик как Pub/Sub если объем данных большой, то где нибудь таблицу повесить в Редисе или еще в каком кеше.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736416
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka,
Вторая очередь не решает проблем таких как:
1) излишних опросов потоками, ожидающих ответа, данной очереди.
2) наличие ответов уже несуществующим потокам.
И то и другое снижает производительность. "Пассажира" конкретно интересует передача объекта потоку. Или, хотя-бы, инициализация переменной, находящейся в потоке. Если такой возможности нет ( как я понял ее нет), лучше так и написать.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736420
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555,
Открою большую тайну: wait-notify приведет к простою потока. Что не совместимо с данной схемой.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736441
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как много неправильных суждений собрано в одном посте:)
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736442
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg"Пассажира" конкретно интересует передача объекта потоку. Или, хотя-бы, инициализация переменной, находящейся в потоке. Если такой возможности нет ( как я понял ее нет), лучше так и написать.
Да, такой возможности нету, ибо это против всякой логики, у вас какое-то неправильное понятие потока. Хотя чисто теоретически и этот финт проктолога возможен
Потоки это деталь исполнения, если надо обменяться данными между двумя потоками то можно сделать эо двумя путями -
1) Передать в конструктор потока некий глобально доступный объект, и менять\опрашивать его либо
2) В самом потоке читать из известного места(файловой системы\базы данных\очереди) и если файл\запись\месседж появились то действовать соотвественно.

Вам не дают сделать криво, но вы все равно упорно стараетесь вырвать зуб через жопу, ну удачи
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736455
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegSergunka,
Вторая очередь не решает проблем таких как:
1) излишних опросов потоками, ожидающих ответа, данной очереди.
2) наличие ответов уже несуществующим потокам.
И то и другое снижает производительность. "Пассажира" конкретно интересует передача объекта потоку. Или, хотя-бы, инициализация переменной, находящейся в потоке. Если такой возможности нет ( как я понял ее нет), лучше так и написать.

Вы невнимательно прочитали общий дизайн вторая должна быть топиком. Если бы Вы были знакомы с концепцией ексченж на RabbitMQ то там есть схема когда очередь открывается по фильтру



авторIn this setup, we can see the direct exchange X with two queues bound to it. The first queue is bound with binding key orange, and the second has two bindings, one with binding key black and the other one with green.

https://www.rabbitmq.com/tutorials/tutorial-four-python.html

Скорее всего такая схема для оповещения продюсера из первой очерди наиболее рабочая, ну или как вариант.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736488
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka,
Я правильно понимаю: группа очередей, на которые "подписываються" потоки? И получают сообщения из подписанной очереди.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736503
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegSergunka,
Я правильно понимаю: группа очередей, на которые "подписываються" потоки? И получают сообщения из подписанной очереди.

Вам надо уйти от концепции потока. Вам надо понять как строится продьюсер и консьюмер и как работают через топик публикатор и подписчик. В RabbitMQ там есть концепция когда можно через фильтр (exchange) раскидывать сообщения в разные очереди. На самом деле если Вы решите Вашу задачу на уровни концепции через очереди и топики, то дальше можно уже делать на низком уровни через потоки и синхронизацию если это важно в постановке задачи.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736526
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergunkaВам надо уйти от концепции потока.+1
Потоки в голове автора главное и заслонили всё.
Они ждут, подписываются, меняют БЛ, посылают байты в сеть и дожидаются ответа...
Я вообще бы присудил по суду ему НЕ использовать потоки в течении квартала)).
Из контейнера сервлетов даже переменную убрали чтобы потоки не туда вкорячивали.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39736758
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkolegalex55555,
Открою большую тайну: wait-notify приведет к простою потока. Что не совместимо с данной схемой.
Не знаю, что там за прекрасная схема, но простоя процессора не будет при просто нормальной реализации (то есть даже без прикрас и прочих чудес).
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39738210
rfq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegДоброе время суток. Подскажите, решаема ли задача по создании такой модели:
Есть множество потоков. Нужно, чтобы один из потоков занимался тем, что вызывал определенные методы из других потоков, используя их ИД, либо имени. Либо, каким-то образом, давал знать этому потоку, чтоб тот выполнил свой метод ( возможно, используя переменную в целевом потоке).

Так не делается.
Вам нужно выполнить какой-то метод. Ну так возмите и выполните его на текущем потоке. Но если методов много и вычислительной мощности одного потока не хватает, упакуйте метод в объект типа Runnable и отошлите в пул потоков. И если, наконец, все множество методов разбивается на подмножества, так что методы одного подмножества должны исполнятся последовательно, назначьте каждому подмножеству свой SerialExecutor, описанный в джавадоке к классу Executor.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39738235
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rfqи отошлите в пул потоков
он упорно считает потоки главнее методов и хочет во время жизни потока менять методы и впихивать внутрь потока методы.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39738290
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegДоброе время суток. Подскажите, решаема ли задача по создании такой модели:
Есть множество потоков. Нужно, чтобы один из потоков занимался тем, что вызывал определенные методы из других потоков, используя их ИД, либо имени. Либо, каким-то образом, давал знать этому потоку, чтоб тот выполнил свой метод ( возможно, используя переменную в целевом потоке).
Тебе надо изучить примитивы синхронизации (семафоры, мьютексы и т.д.), межпоточные коммуникации и т.д.
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39738292
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123rfqи отошлите в пул потоков
он упорно считает потоки главнее методов и хочет во время жизни потока менять методы и впихивать внутрь потока методы.
он просто хочет иметь менеджер потоков
...
Рейтинг: 0 / 0
Вызов метода из другого потока по ид потока
    #39738343
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosон просто хочет иметь менеджер потоков
Ты у себя в шарпе на wpf уже такой делал что посоветовал?
Тут вам не MS).
...
Слово "иметь" надо бы заменить))).
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Вызов метода из другого потока по ид потока
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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