2013-11-08 3 views
0

У меня проблемы с многопоточным приложением, которое использует семафоры, которые я пытаюсь запрограммировать на Java.Java-потоки не работают одновременно - что я делаю неправильно?

У меня есть несколько потоков, которые работают в бесконечных циклах для обработки набора данных в конвейере. «Бег» функция каждого потока выглядит примерно так:

public void run() 
{ 
while(true) 
{ 
    try{ 
    //acquire semaphore, wait if unavailable 
    //continue with code 
} 
    catch(InterruptedException e) 
    {} 
} 

Моя цель состоит в том, чтобы держать несколько потоков открытым и запускать различные наборы данных через них по одному, согласовав с семафоров. Моя проблема в том, что мои потоки, похоже, не работают одновременно. Как только я запускаю() поток с бесконечным циклом, вся моя программа зависает и не будет продолжаться. Что я делаю не так?

+4

Можете ли вы показать код, в котором все потоки порождены? –

+0

Возможно, вам потребуется разместить дополнительную информацию, желательно [sscce] (http://sscce.org). Однако сначала проверьте, что вы начинаете каждый поток, вызывая его метод «start», а не «run». –

+0

wow, назвав свои темы «run», была моей проблемой все это время, спасибо тонну – user2968162

ответ

2

Как только я бегу() поток с бесконечным циклом,

myThread.start() //correct way 

not myThread.run() // this is not the correct way 
Смежные вопросы