![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Gregorian |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 18.12.2006 Репутация: нет Всего: 2 |
Хочу написать многопоточный менеджер закачек. Нужно создать такой класс, который одновременно запускает n-потоков, и если некоторые из них завершаются, класс должен запускать новые, т.е. поддерживать их n-ное количество. Потоки должны иметь общие переменные.
Есть идеи? --------------------
Вступил на путь доморощенного жабиста дилетанта! |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
||||
|
||||
| Gregorian |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 18.12.2006 Репутация: нет Всего: 2 |
Не получается начать. Какие классы использовать?
Я подумал, может что то готовое уже есть, ведь платформа очень развитая. Это сообщение отредактировал(а) Gregorian - 15.1.2007, 23:29 --------------------
Вступил на путь доморощенного жабиста дилетанта! |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
Обычно все-таки не создание/завершение потоков используют (операции создания и завершения потока - довольно ресурсоемкие), а пулы потоков. То есть создается очередь из этих n потоков, готовых к работе. Создаваться она может как сразу, так и по мере поступления заданий. Но при этом не превышает установленного количества. Когда появляется задание, из списка свободных потоков выбирается один, которому это задание и назначается. Операция завершения потока не выполняется (точнее, ее можно реализовать по таймауту если, например, поток долго не использовался, но это скорее будет лишним усложнением конструкции). Таким образом, количество потоков остается постоянным. Почитать про пулы потоков и посмотреть примеры можно, например здесь и здесь.
|
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Классов то много.. смотря что ты хочешь сделать. Уж больно вопрос у тебя обширный... вот например для работы с потоками смотри классы Thread и интерфейс Runnable. У нас кстати есть статья в FAQ по многопоточному программированию.
Что могу посоветовать в общем плане: 1) Интерфейс программы продумай. Какую функциональность она должна предоставлять. Как пользователь будет с ней взаимодействовать 2) Определись какими средствами ты будешь выполнять реализацию поставленных задач. Какие логические компоненты будут существовать в твоей программе. Какая функциональность будет наложена на каждый компонент. Как компоненты будут взаимодействовать. Как компоненты можно будет расширить функционально. 3) Определи реализацию всех компонентов. Тут уже нужно думать о потоках, о классах, о данных и о прочей мелкой утвари. |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Есть java.util.concurrent. В частности, executorservice'ы.
-------------------- ![]() ![]() |
|||
|
||||
![]()
|
| Правила форума "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. |