Присоединение потока Java () - PullRequest
       13

Присоединение потока Java ()

0 голосов
/ 20 декабря 2018

Если у меня есть один массив из 10 потоков, готовых к использованию, и если у меня есть что-то вроде

for (int i=0;i< MyThreadArray.length: i++){
MyThreadArray[i].start()
MyThreadArray.join()
}

Если у потока # 6 есть sleep () 5 минут, как я могу запуститьпоток № 7 до конца № 6?Я должен ждать конца # 6 или есть какие-то инструкции для запуска "следующего потока"?

1 Ответ

0 голосов
/ 20 декабря 2018

Используйте две петли.В первом из них вы должны запустить все потоки:

for (int i=0;i< MyThreadArray.length: i++){
    MyThreadArray[i].start()
}

Это запустит все из них.После этого вы хотите дождаться их завершения:

for (int i=0;i< MyThreadArray.length: i++){
    MyThreadArray[i].join()
    // notice    ^^^ you had a typo there
}

Это будет ждать окончания каждого потока, прежде чем двигаться дальше.

Кроме того, обратите внимание, что эта конкретная логика:

for (int i=0;i< MyThreadArray.length: i++){
    MyThreadArray[i].start()
    MyThreadArray[i].join()
}

- это просто худшая версия , а не , использующая параллелизм, поскольку она будет ожидать каждого отдельного потока последовательно , дополнительно добавляя некоторые издержки при запуске Thread.

...