Как запускать методы Java один за другим?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как запускать методы Java один за другим?

Сообщение Anonymous »

Здесь полный новичок в Java, поэтому прошу прощения, если это глупый вопрос...
Я пытаюсь создать таймер pomodoro и пытаюсь заставить мои методы запускаться один за другим но они продолжают работать одновременно. Как это исправить?
Я поигрался и исследовал, как работают Timer/TimerTask и ScheduledExecutorService, но после множества неудачных попыток я все еще не понимаю, как их реализовать в моя программа, поэтому она работает так, как задумано.
Все мои усилия привели меня к методу Study() и Stop(). успешно бегут, но при этом они бегут друг на друге. Я пытаюсь сделать так, чтобы метод Study() запускался, завершался, а затем запускался метод Stop().
Вот моя попытка...
Основной класс:

Код: Выделить всё

import java.util.Scanner;
import java.util.concurrent.*;

public class Main{

// METHOD FOR STUDY
static void Study(int x) {

System.out.println("\nSeconds remaining...");

// COUNTDOWN FOR STUDY
Countdown study_clock = new Countdown(x);
Thread study_thread = new Thread(study_clock);
study_thread.start();
}
// METHOD FOR BREAK
static void Stop(int y) {

System.out.println("\nSeconds remaining...");

// COUNTDOWN FOR STUDY
Countdown study_clock = new Countdown(y);
Thread study_thread = new Thread(study_clock);
study_thread.start();
}

// MAIN METHOD
public static void main(String[] args) {

// SIMPLE UI & ALL DATA INPUTS
String ui = """
-----------------------------------------
---------- WELCOME TO POMODORO ----------
-----------------------------------------
""";
System.out.println(ui);
// STUDY
String study_q = "How many minutes would you like to study?: ";
System.out.println(study_q);
Scanner study_input = new Scanner(System.in);
int study_a = study_input.nextInt();

// BREAK
String stop_q = "How long would you like your breaks to be?: ";
System.out.println(stop_q);
Scanner stop_input = new Scanner(System.in);
int stop_a = stop_input.nextInt();

// TIMES REPEATED
String cycles_q = "How many times would you like this cycle to be repeated?: ";
System.out.println(cycles_q);
Scanner cycles_input = new Scanner(System.in);
int cycles_a = cycles_input.nextInt();

// MINUTES TO SECONDS
int study_a_mins = study_a * 60;
int stop_a_mins = stop_a * 60;
// MINUTES TO MILLISECONDS
int snooze = study_a_mins * 60000;

Study(study_a_mins);
try {
Thread.sleep(snooze);
} catch (Exception e){
}
Stop(stop_a_mins);

}
}
Класс обратного отсчета:

Код: Выделить всё

public class Countdown implements Runnable{

private int seconds;

// RECEIVING COUNTDOWN AMOUNT
public Countdown(int seconds) {
this.seconds = seconds;
}

// THE COUNTDOWN PROCESS
public void run(){
for (int i = seconds; i >= 0; i--){

System.out.println(i);

try{
Thread.sleep(1000);
}
catch (Exception e){
System.out.println(e);
}

}
}

}
Опять же, это первая попытка использования Java, поэтому любые советы и подсказки будут очень признательны!

Подробнее здесь: https://stackoverflow.com/questions/790 ... er-another
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»