![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Berliner |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 18.5.2005 Репутация: 1 Всего: 2 |
есть ли в в Java какой нить таймер наподобие как в Delphi чтобы можно было через какое нить время производить определенные действия?
|
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
смотри java.util.Timer
|
|||
|
||||
| Berliner |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 18.5.2005 Репутация: 1 Всего: 2 |
Спасиб посмотрю
|
|||
|
||||
| Enflout |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 260 Регистрация: 22.5.2004 Репутация: 1 Всего: 6 |
||||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
даже побробней расскажу
Вот пример:
Сначало создаем TimerTask - это тот поток, который мы хотим выполнять с определенным интервалом. Твой код должен находится в методе run() - именно он и будет выполняться. Потом создаем объект таймер - Timer - он будет управлять запуском taska (задачи). Метод schedule объекта Timer, в данном случае имеет 3 параметра: первый - TimerTask - задача для выполнения, второй - long delay - задержка пред выполнением задачи в милисекундах, третий - long period - время в миллисекундах между корректными завершениями задачи. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Ещё вдогонку:
Частенько понадобится сохранять состояния между вызовами и накапливать информацию: унаследуй свой класс "Задача" от TimerTask и переопредели метод run() Тогда сможешь не только выполнять ЧТО-ТО,но и иметь доступ к объекту задачи извне. На всяк случай: есть ещё scheduleAtFixedRate, абсолютно аналогичный schedule, только выполняться будет через РАВНЫЕ промежутки времени (т.е. без учёта времени на выполение одного таска). Отмеряет новый цикл от НАЧАЛА ВЫПОЛНЕНИЯ ПРЕДЫДУЩЕГО ТАСКА, а не от ЗАВЕРШЕНИЯ ПРЕДЫДУЩЕГО ТАСКА. Завершить этот вечный "повторизм" можно:
Это сообщение отредактировал(а) chief39 - 27.1.2006, 18:00 -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| Berliner |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 18.5.2005 Репутация: 1 Всего: 2 |
Код приведенного выше примера не работает. Пишел TimerTask -абстрактій класс
Вот код
я думаю надо так
|
||||
|
|||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Этот код работает. TimerTask действительно абстрактный, но ты же от него наследуешь и переопределяешь run(). Приведи код полностью и сообщение компилятора. -------------------- 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. |
||||
|
|||||
| Berliner |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 18.5.2005 Репутация: 1 Всего: 2 |
Да - работает, если пописать этот код в методе мєйн .
А как создать какой нить класс например для работы с TimerTask и Timer чтобы потом вызвать метод в main? я так понимаю если класс обстрактый то нужно создать реальный класс который наследует методы от абстрактоного класса class RealTimerTask extends TimerTask RealTimerTask task = new RealTimerTask() |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Все правильно понимаешь. Создаешь класс наследованный от TimerTask, реализуешь его абстрактные методы. А дальше можешь создавать этого класса объекты и "запускать" их с помощью Timer-a. Как методы абстрактные реализуешь ( часности метод run() ), так работать и будет.... |
|||
|
||||
| Berliner |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 18.5.2005 Репутация: 1 Всего: 2 |
Вот код что я написал. Компилит без ошибок только не работает. Подскажите пожалуста ,что я не так написал.
ВОт код из main
|
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
TimerTask не должен сам себя запускать, а уж тем более не должно быть вот такой строчки RTimerTask task=new RTimerTask(); этож гарантированный StackOverflowError.
-------------------- 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. |
|||
|
||||
| Berliner |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 18.5.2005 Репутация: 1 Всего: 2 |
Спасиб
|
|||
|
||||
![]()
|
| Правила форума "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. |