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

Вопрос

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

Контекст

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

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

Я хочу выполнить такой поток, как:

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

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

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


person Robert H    schedule 27.05.2013    source источник
comment
Почему бы вам не использовать службу исполнителя и для задачи RT?   -  person amicngh    schedule 27.05.2013
comment
@amicngh На самом деле это то, что я подумывал сделать - я просто не уверен, что создание нескольких служб-исполнителей является наиболее эффективным способом делать что-то.   -  person Robert H    schedule 27.05.2013
comment
Каждая задача MP обрабатывает группу задач RT, поэтому лучше создать ThreadPool и отправить задачу RT в этот пул. Каждое задание будет выполнено..   -  person amicngh    schedule 27.05.2013


Ответы (1)


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

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

person Djon    schedule 27.05.2013
comment
Спасибо - это согласуется с тем, как я думал о проблеме (и, основываясь на отзывах, как ее видят другие). - person Robert H; 27.05.2013
comment
Я не уверен, что правильно понял ваш вопрос, но это действительно первое и наиболее эффективное решение, которое пришло на ум. - person Djon; 27.05.2013