![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
Samuil |
|
|||
![]() в(Job)ываю ![]() ![]() Профиль Группа: Участник Сообщений: 705 Регистрация: 26.4.2006 Где: Uzbekistan.Tashke nt Репутация: 5 Всего: 6 |
Привет Всем!
Возник вопрос как в j2me можно убить поток Thread?
Это сообщение отредактировал(а) Samuil - 15.7.2006, 22:05 |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: нет Всего: 159 |
Может просто сделать возврат из метода run() при определенных условиях? Например создать переменнную типа boolean состояние которой будет отображать необходимость завершения потока. В методе run() на каждой итерации проверять состояние флага и если необходимо завершать выполнение метода return-ом.
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
В Java единственным нормальным способом завершения потока, является выход из метода run().
Варианты реализации этого MoonCat тебе уже подсказал. -------------------- 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. |
|||
|
||||
Samuil |
|
|||
![]() в(Job)ываю ![]() ![]() Профиль Группа: Участник Сообщений: 705 Регистрация: 26.4.2006 Где: Uzbekistan.Tashke nt Репутация: 5 Всего: 6 |
Привет!
Но вот же :while (openThread == true) {} Когда приходит время я делаю: openThread =false; Но ничего не получается ![]() ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 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. |
|||
|
||||
Samuil |
|
|||
![]() в(Job)ываю ![]() ![]() Профиль Группа: Участник Сообщений: 705 Регистрация: 26.4.2006 Где: Uzbekistan.Tashke nt Репутация: 5 Всего: 6 |
Вот он:, В методе paint он прорисовывается и все!
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
При чем тут это. Я говорил, про условие выхода из цикла. Пока ты не выйдешь из метода, Thread.currentThread() будет возвращать все время одно и тоже значение, а если переменная thr тоже не меняется. То условие всегда будет или true, или false. -------------------- 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. |
|||
|
||||
Samuil |
|
|||
![]() в(Job)ываю ![]() ![]() Профиль Группа: Участник Сообщений: 705 Регистрация: 26.4.2006 Где: Uzbekistan.Tashke nt Репутация: 5 Всего: 6 |
thr -это сам поток Thread!
Thread thr=new Thread(this); thr.start(); |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
Ну и что ты после этого хочешь? Thread.currentThread() вернет тебе текущий поток, т.е. тот же самый thr. Соответсвенно условие всегда будет true, и из внутреннего цикла ты никогда не выйдешь.
Нафига вообще такое условие понадобилось? -------------------- 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. |
|||
|
||||
BackUp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
LSD, А как Вы посоветуете решить эту проблему?
|
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
В принципе он все правильно сделал, цикл while(openThread == true) с проверкой, что по прежнему надо продолжать выполнение. Единственное, что мешает этому коду работать, это внутренний цикл, с каким-то совершенно непонятным условием. Зачем он тут я не понимаю. Ну и плюс я бы переписал код так:
а чтобы остановить поток:
-------------------- 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. |
||||
|
|||||
Samuil |
|
|||
![]() в(Job)ываю ![]() ![]() Профиль Группа: Участник Сообщений: 705 Регистрация: 26.4.2006 Где: Uzbekistan.Tashke nt Репутация: 5 Всего: 6 |
LSD, СПАСИБО!!!
|
|||
|
||||
W0LF |
|
||||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Че-то я не понял...
notifyAll() пробуждает все приостановленные потоки. И ваще - поток нельзя убить -------------------- iOS developer |
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
Пробуждает все потоки, которые выполнили wait() на данном объекте. Можно было бы и без этого, но тогда остановка потока могла занять лишние 500 миллисекунд. -------------------- 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. |
|||
|
||||
W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
![]() -------------------- iOS developer |
|||
|
||||
Samuil |
|
|||
![]() в(Job)ываю ![]() ![]() Профиль Группа: Участник Сообщений: 705 Регистрация: 26.4.2006 Где: Uzbekistan.Tashke nt Репутация: 5 Всего: 6 |
А если нужно опять создать поток то просто пишем : Thread thr=new Thread(this); thr.start()?Верно?
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
Остановленный поток, не может быть запущен заново, так что надо создавать новый.
Но можно создать наш класс и реализовать интерфейс Runnable. Когда нам нужно его запустить на выполнение, то создаем поток и в конструктор передаем ему наш объект. После того как поток отработает, поток будет уничтожен сборщиком мусора. Но наш объект мы можем сохранить, и при необходимости создать новый поток, и снова заставить работать в новом потоке тот же самый объект. -------------------- 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. |
|||
|
||||
Samuil |
|
|||
![]() в(Job)ываю ![]() ![]() Профиль Группа: Участник Сообщений: 705 Регистрация: 26.4.2006 Где: Uzbekistan.Tashke nt Репутация: 5 Всего: 6 |
LSD, Могли бы Вы зайти по этой ссылке:http://forum.vingrad.ru/index.php?showtopic=104273 Нужна помощь специалиста!
|
|||
|
||||
W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Поэтому лучше использовать wait()/notify() -------------------- iOS developer |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
На J2ME я не пишу, у меня даже J2ME SDK нет. Могу только посоветовать, проверить пути на предмет правильности указания регистра (не знаю как с этим у Symbian-ов), и поставить печать стека ошибок в блок try/catch.
И еще, если ты хочешь обратится к человеку лично, не надо писать об этом на форуме, пользуйся PM. -------------------- 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. |
|||
|
||||
Samuil |
|
|||
![]() в(Job)ываю ![]() ![]() Профиль Группа: Участник Сообщений: 705 Регистрация: 26.4.2006 Где: Uzbekistan.Tashke nt Репутация: 5 Всего: 6 |
W0LF,
notify()-он для чего служит? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 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. |
|||
|
||||
Samuil |
|
|||
![]() в(Job)ываю ![]() ![]() Профиль Группа: Участник Сообщений: 705 Регистрация: 26.4.2006 Где: Uzbekistan.Tashke nt Репутация: 5 Всего: 6 |
Ок спасибо!
|
|||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |