![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| kostay |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
есть 4 лесоруба которые рубят деревья и складывают брёвна на склад, каждый имеет рендомное коли4ество(0-9)
рисуются один большой квадрат типо склад, и 4 маленьких которые движутся к нему, всё с цифрой сверху. достигая надо 4тобы они остановились на 500 миллисек и брёвна выложил тот у кого их меньше, ну ето не важно, хотябы 4тобы они поо4ереди их выложили, тоесть каждый из потоков поо4ереди имел доступ к методу, вот основной код, вобшем пока не выложил не продолжает движение. ни4его не понимаю ((
отрывок из другова класса }
|
||||
|
|||||
| kostay |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
4то никто не знает 4то мне записать в synchronized метод, 4тобы потоки поо4ереди или по определённому условию пользовали его? помоему ето просто, но сколько не пытался ни4его не выходило... умаляю помо4 о4ень надо.
|
|||
|
||||
| Aristotelb |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 23.3.2007 Где: Саратов Репутация: 4 Всего: 5 |
так?
зачем там цикл while(hasPieces == 0) ?- зацикливание произойдет же можно выложить упрощенный запускаемый пример? |
|||
|
||||
| kostay |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
более упрошонно на словах: есть синхронизироваанный метод(монитор) к которому одновременно обрашается несколько потоков, надо 4тобы только один из них имел доступ остальные ждали, тот кто выполнил дейсвие продолжает свои другие дела, потом следуший и так далее...
вот все коды
|
||||||||||
|
|||||||||||
| Aristotelb |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 23.3.2007 Где: Саратов Репутация: 4 Всего: 5 |
Сорри что одним файлом
оно?
для наглядности добавил раздельный старт Это сообщение отредактировал(а) Aristotelb - 18.11.2007, 23:27 |
|||
|
||||
| kostay |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
116: hasPieces += logCount; моя ошибка
ага работает так как нужно, я думал wait() заставляет их ждать а notify() действовать, 4то тут вобше полу4ается можеш пояснить? они всёже одновременно имеют доступ или в какой о4ерёдности? да и как тут поставить 4тоб цифра над красным квадратом менялась только когда поменялось зна4ение 4орного квадрата? по4емуто обнуляются 4 сразу а большой квадрат постепенно хотя: logHouse.placeLogs(wclist.get(i - 1).takeLogs()); Добавлено через 4 минуты и 35 секунд а нас4от последнего дошло: видимо то 4то в скопках выполняют все сразу только потом они ставят ето в другой метод который заставляет ждать, видимо придётся переделать: отдавать и обнулять отдельные методы Добавлено через 8 минут и 55 секунд и последнее, куда сдесь можно былоб записать какое-либо условие, к примеру 4тобы о4ерёднось была такая 4то первый выкладывает тот кто имеет больше остальных... |
|||
|
||||
| Aristotelb |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 23.3.2007 Где: Саратов Репутация: 4 Всего: 5 |
у одного и того же объекта разные потоки не могут вызвать synchronized метод одновременно.
подробно читай здесь Это сообщение отредактировал(а) Aristotelb - 19.11.2007, 18:19 |
|||
|
||||
| Aristotelb |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 23.3.2007 Где: Саратов Репутация: 4 Всего: 5 |
Вобщем так: написано жутко криво но луче ничего не придумал
|
|||
|
||||
| kostay |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
ну ето понятно, я вот только думал, 4то доступ организовывается с помошью wait и notify, оказывается они слу4айным образом кто успел тот и попал, тогда никак не могу вьехать за4ем методы 4то я назвал... |
|||
|
||||
| Aristotelb |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 23.3.2007 Где: Саратов Репутация: 4 Всего: 5 |
все правильно для управлениея доступом, а если нужно точно определить последовательность выполнения тогда нужно очередь задач делать, вообще в твоей программе ИМХО потоки лишние проще было б в цикле этих лесорубов обрабатывать
|
|||
|
||||
![]()
|
| Правила форума "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. |