Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > помогите разобраться с Thread?


Автор: unkis 27.4.2007, 11:01
Ребята такая проблема, есть цикл, который запускает новые Thread, надо сделать, что как только достигло определённое количество Threas к примеру 5, цикл как бы останавливается и ждёт пока кол-во Thread не у уменьшится хотя бы на один, и если уменьшилось, то прродолжает дальше работать и создавать новые Threads.

Как это реализовать?

вот так я создаю новые Thrads.
Код

while(requestCounter<100000){
requestCounter++;
                    NewThread t;
                    if (requestCounter%5000==0){
                        
                        t = new NewThread(requestLocationList);
                        Controller.threads.add(t);//добовляем Threads в лист, чтобы потом можно было подождать пока все закончат
                                                                    
                    }
}

Автор: _Y_ 27.4.2007, 11:16
Mожет сделать счетчик Thread-ов threadCounter?  Если threadCounter<=5 запускается новый Thread, если нет - ставится  в очередь. а по окончании работы каждый Thread генерирует событие проталкиваюшее эту очередь.

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

Автор: boevik 27.4.2007, 11:42
ещё вариант, использовать static variable - counter в классе requestLocationList
Когда run запускается увеличивать counter, при окончании run уменьшать.

Из while проверять сколько thred-ов бежит и соотвественно поступать полученому результату 

Автор: W0LF 27.4.2007, 11:47
Код

java.util.concurrent.ThreadPoolExecutor

Автор: W0LF 27.4.2007, 13:56
вот еще паттерн Executor

Автор: unkis 29.4.2007, 11:03
W0LF, 
то что надо, а можно небольшой пример

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)