![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| headzero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 14.11.2006 Репутация: нет Всего: 1 |
Задача таковая - реализовать пул потоков, с заданным максимальным числом одновременно выполняющихся потоков + таск который выполняется и добавляет в очередь задач все новые и новые задачи.Работа пула не должна зависеть от скорости выполняющихся тасков.
Я пробовал что-то сделать. Вроде с горем пополам, но работает. Реализовал очень криво,иногда даже наугад, потому есть много вопросов: 1. В каких местах надо ставить синхронизацию? 2. Как считать количество выполняющихся на даный момент потоков? В каком месте нужно правильно инкрементировать/декрементировать счетчик. 3. Когда задача мой таск выполняется слишком быстро, очередь потоков наполняется соответственно тоже быстро, но все время выполняется только один поток, а должно максимальное число. 4. Может надо использовать wait/notify для приостановки добавления задач если очередь задач пуста или достигнуто максимальное количество потоков? Если можно, пожалуйста, помогите правильно реализовать, и подкорректируйте код. Спасибо
-------------------- Воображение важнее знания (Алберт Эйнштейн) |
|||
|
||||
| Vurn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.5.2007 Репутация: 2 Всего: 3 |
||||
|
||||
| Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: 1 Всего: 40 |
это есть в стандартной бибке явы. Смотрите Executors.
или вот вам ссылка http://java.sun.com/javase/6/docs/api/java...ThreadPool(int) -------------------- Бонифаций. |
|||
|
||||
| headzero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 14.11.2006 Репутация: нет Всего: 1 |
Спасибо, про эти пакеты я знаю. Но задача стоит в том что-бы реализовать пул без сторонних пакетов, используя только примитивы синхронизации и стандартные функции из Thread. -------------------- Воображение важнее знания (Алберт Эйнштейн) |
|||
|
||||
| SoulKeeper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.1.2007 Где: Ukraine, Lviv. Репутация: 11 Всего: 15 |
Этот пул - стандартные пакеты джавы.
|
|||
|
||||
| headzero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 14.11.2006 Репутация: нет Всего: 1 |
Задача состоит в том чтобы реализовать пул самостоятельно, без пакета concurrency.Жду предложений, и комментариев.
-------------------- Воображение важнее знания (Алберт Эйнштейн) |
|||
|
||||
| Vurn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.5.2007 Репутация: 2 Всего: 3 |
А что тут сложного? только очередь переделать на Queue, обработчики будут спать на ней, вычислители, захватив - будут будить, обработчики обработав кусок - уменьшать переменную обратного отсчета и будить вычислителей.
Это сообщение отредактировал(а) Vurn - 19.12.2008, 16:20 |
|||
|
||||
| Vurn |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.5.2007 Репутация: 2 Всего: 3 |
Кстати, никто не мешал в той ссылке, что я давал выше, написать свои CountDownLatch & BlockingQueue, они пишутся элементарно чрезе synchronized/wait/notify.
P.S. от нефиг делать написал.
Это сообщение отредактировал(а) Vurn - 19.12.2008, 18:04 |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |