#java #timer
#java #таймер
Вопрос:
Я хочу реализовать своего рода таймер в java. Я объясняю: мой код должен выполняться в течение 10 секунд; У меня есть 3 разных целых числа (a, b и c, все они инициализируются равными 0), и я хочу увеличивать и уменьшать их в разные промежутки времени:
- От 0 до 3 секунд a = 1, b = 0 и c = 0.
- От 3 до 6 секунд a = 0, b = 1 и c = 0.
- От 6 до 10 секунд a = 0, b = 0 и c = 1.
Вот мой код:
int a = 0;
int b = 0;
int c = 0;
a = 1
Thread.sleep(3000);
b = 1;
a = 0;
Thread.sleep(3000);
b = 0;
c = 1;
Это работает, но это очень некрасиво!!
Как я могу улучшить этот код? Должен ли я использовать секундомер? (Я прочитал некоторые решения, которые используют swing timer, я не использую компоненты swing, поэтому мне это не нужно)
Комментарии:
1. Если в ответе есть код, который работает, попробуйте задать вопрос в Code Review.
2. Это может быть сделано по-разному, все зависит от контекста. Где будет использоваться этот код? Для чего?
Ответ №1:
Перед запуском вашего метода используйте System.currentTimeMillis(), чтобы получить время начала. Затем внутри вашего метода используйте System.currentTimeMillis(), чтобы получить текущее время, и сверьте это текущее время со временем начала, чтобы получить ваше прошедшее время. Делайте все, что хотите, в зависимости от прошедшего времени.
Редактировать: если вы не хотите что-то запланировать, в этом случае используйте класс Timer . Рекомендуемое чтение: http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html