5

ВопросКаков наиболее эффективный способ создания дополнительных потоков из потока?

Что является наиболее эффективным способом создания дополнительных потоков из потока?

Контекст

Я перепроектирование приложение, чтобы быть более эффективным. Одним из самых больших улучшений будет одновременная работа; однако я новичок в параллельном программировании. Сценарий, который я хочу улучшить, выглядит следующим образом:

У нас есть несколько торговых площадок для импорта заказов, а затем загрузка в нашу систему ERP. Каждый рынок имеет несколько типов записей для импорта. В настоящее время это делается как MP->RT->RT->RT->RT, где вызывается торговая площадка (MP), а затем добавляются последующие записи (RT).

То, что я хочу сделать это поток, как:

MP 
    |-> RT 
    |-> RT 
    |-> RT 
    |-> RT 
MP 
    |-> RT 
    |-> RT 
    ... 

где несколько рынки вызываются, а затем несколько типов записей добавляются одновременно.

В настоящее время я использую executor service, который управляет MP задачами, но я хочу знать, как лучше всего обращаться с задачами RT.

+2

Почему бы вам не воспользоваться службой-исполнителем для задания RT? – amicngh

+0

@amicngh Это на самом деле то, что я рассматривал - я просто не уверен, что создание нескольких служб-исполнителей - самый эффективный способ сделать что-то. –

+0

Каждая задача MP обрабатывает множество задач RT, поэтому лучше создать ThreadPool и отправить задачу RT в этот пул. Каждая задача будет выполнена. – amicngh

ответ

6

Не можете ли вы представить каждую задачу RT в ThreadPool (MT) и позволить им работать отдельно?

У вас может быть несколько исполнителей (ThreadPool - один из них, выберите тот, который лучше всего соответствует вашим потребностям) или только один, и каждая задача RT может быть отправлена ​​внутри них.

+1

Спасибо. Это согласуется с тем, как я думал о проблеме (и основывался на upvotes, как другие видят ее также). –

+0

Я не уверен, что понял ваш вопрос, но это действительно первое и самое эффективное решение, которое пришло на ум. – Djon