Читаешь данные в главном потоке, что бы не путаться.
После чтения складваешь полученные данные в очередь (queue).
Потоков сколько хочешь (только не забудь синхронизацию, если будет несколько). Поток(и) забирают очередной объект из очереди и обрабатывают.
|