![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Platon |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Здравствуйте, уважаемые.
Встала проблема в синхронизации.
2 сообщения, по идее должно отправляться
а шлется
и в отдельных потоках, а не в одном как хотелось бы. Что-то isWorking не успевает подняться, и все потоки благополучно запускаются, что конечно же противоречит желаемому. пробовал к этому полю синхронизированный доступ организовать, та же история, прошу помочь. |
||||||
|
|||||||
Platon |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Сделаю предположение, что sendMessage synchronized, и глупо поступаю когда в конструкторе сообщаю new Thread(this) и потом стартую, выходит, что стартовать он не сможет до тех пор, пока this synchronized. и изменить isWorking соответственно не сможет, как же правильно разрулить ситуацию? я попробовал сделать
но чревато ли это чем нибудь? Это сообщение отредактировал(а) Platon - 23.5.2007, 11:31 |
||||||
|
|||||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Ну, по идее, пришёл ты в сендмесседж, запустил тред. Ничего странного в том, что джвм выполнила все действия по запуску треда, а потом система решила что пора и другие треды пощёлкать. Если это произойдёт до того, как изВоркинг установится в тру - то запустится ещё раз тред.
Это потому что запуск и пометка о запуске происходят у тебя не в одном синхронайзд блоке. Попробуй перенести в Сразу перед (new Thread(this)).start();. То есть ты уже в стадии запуска, ставишь а-ля свой лок на повторный запуск треда и собсно, запускаешь его следующей строчкой. Это гарантирует что никто не вклинится между тем как ты его запустил и тем, как он начал выполнять своё тело. Кроме того, ставь именно перед, чтоб он приходил в метод run с уже гарантированно установленным isWorking -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Угу, я именно так и сделал. Спасибо.
|
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Тогда пометь решённым
![]() -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |