![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Asafj |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 26.8.2010 Репутация: нет Всего: нет |
Как определить количество запущенных потоков?
нужно чтобы поток не выполнял действия пока есть другие потоки. |
|||
|
||||
| AxNe0 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 24.4.2006 Где: St. Petersburg Репутация: 4 Всего: 5 |
обычно такие задачи решаются синхронизацией потоков
|
|||
|
||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Тогда он никогда ничего не выполнит, потому что JVM запускает некоторое количество служебных потоков. Для сборки мусора, например. Если вы хотите отложить выполнение потока до завершения работы некоторых определенных потоков, то вам поможет CyclicBarrier На русском также есть краткое описание вот тут. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| Asafj |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 26.8.2010 Репутация: нет Всего: нет |
У меня в случае если пользователь нажмет быстро на кнопку второй раз запускается тот же процесс И в критической секции происходит deadlock. И соответственно при входе в критическую секцию в случае если запущено 2 потока второй должен подождать.
|
|||
|
||||
| AxNe0 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 24.4.2006 Где: St. Petersburg Репутация: 4 Всего: 5 |
критическая секция - метод? если да, то можно его синхронизировать, это будет выглядеть примерно как:
|
|||
|
||||
| Asafj |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 26.8.2010 Репутация: нет Всего: нет |
это уже сделано
|
|||
|
||||
| Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 6 Всего: 16 |
А запретить кнопку после первого нажатия религия не позволяет? |
|||
|
||||
| Asafj |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 26.8.2010 Репутация: нет Всего: нет |
а какие здесь варианты? как подождать завершения потока? или просто через какое то время разрешить - тоже как это сделать
|
|||
|
||||
| Sibit |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 6.10.2009 Где: NSK Репутация: нет Всего: 1 |
Мне вот тоже не понятна проблема, вначале потока запрещаем нажимать кнопку, в конце разрешаем - и не надо заморачиваться с синхронизацией потоков. Или там статический флаг вывесить - и при нем не запускать метод. При желании вариантов можно массу выдумать.
Я думаю, лучше код выложить, что бы было понятно в чем трудность. |
|||
|
||||
| Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 1 Всего: 9 |
Как то так, слушать когда поток заканчивает работу и тогда его опять сбрасывать в null Это сообщение отредактировал(а) Connie - 10.12.2010, 13:42 |
|||
|
||||
![]()
|
| Правила форума "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. |