![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| batex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 15.5.2010 Репутация: нет Всего: нет |
Возникла проблема с синхронизацией большого кол-во потоков с помощью функций wait(), notify(). Используется массив lock'ов. Код должен делать следующее: создает по параметру одинаковые потоки, которые уменьшают по очереди второй параметр. Потоки создаются, но в итоге программа виснет.
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Ctrl+Break выведет на консоль тред дамп, там можно посмотреть какой поток чем занят (только передай в конструктор Thread нормальное имя).
Ну и хотелось бы описание того, что ты пытался реализовать. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| priam220 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
в определенный момент они все у тебя засыпают, следовательно:
Вывод: Thread 1 9 Thread 3 8 Thread 3 6 Thread 3 5 Thread 3 4 Thread 3 3 Thread 3 2 Thread 3 1 Thread 3 0 Threads 3 finish Thread 1 7 Threads 1 finish Threads 2 finish Threads 5 finish Threads 7 finish Threads 4 finish Threads 9 finish Threads 6 finish Threads 8 finish Threads 10 finish P.S. не ясно, что вы пытаетесь сделать wait/notify, причем применяя их к разным переменным. Но если дело в декременте, то лучше сделать так:
Это сообщение отредактировал(а) priam220 - 21.10.2011, 16:42 |
||||
|
|||||
| batex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 15.5.2010 Репутация: нет Всего: нет |
Реализовать я хотел следующее: создать много одинаковых потоков, которые будут по очереди уменьшать параметр "а" на 1. У каждого потока есть свой sync для синхронизации. Переменные для синхранизации разные - потому что я хотел сначала разбудить поток "n", потом уменьшить "а", потом разбудить следующий поток |
|||
|
||||
| priam220 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
Пришлось немного задержаться на работе, но в конце-концов я понял, что нужно. Вот рабочий код:
Успехов! Это сообщение отредактировал(а) priam220 - 21.10.2011, 23:21 |
||||
|
|||||
| batex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 15.5.2010 Репутация: нет Всего: нет |
Большое спасибо за помощь!
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Уменьшать счетчик можно и без синхронизации. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
||||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Быстрее и прозрачнее логика. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "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. |