java — выполнение таймера

#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