勘違いだったら申し訳ないのですが、1秒毎に日時を表示させながら、他の処理を同時に行いたいということでしょうか。それならばjava.lang.Threadクラスを利用することで実現することができます。以下に例を示します。
java
1import java.text.SimpleDateFormat;
2import java.util.Date;
3
4public class Main {
5
6 public static void main(String[] args) {
7 System.out.println("Hello");
8
9 new Thread(() -> {
10 try {
11 SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
12 for (int i = 0; i < 30; i++) {
13 System.out.println(formatter.format(new Date()));
14 Thread.sleep(1000);
15 }
16 } catch (InterruptedException e) {
17 e.printStackTrace();
18 }
19 }).start();
20
21 System.out.println("World!");
22 }
23}
実行結果は以下のようになります。
Hello
World!
2020/08/19 22:36:33
2020/08/19 22:36:34
2020/08/19 22:36:35
2020/08/19 22:36:36
2020/08/19 22:36:37
2020/08/19 22:36:38
2020/08/19 22:36:39
2020/08/19 22:36:40
2020/08/19 22:36:41
2020/08/19 22:36:42
2020/08/19 22:36:43
2020/08/19 22:36:44
2020/08/19 22:36:45
2020/08/19 22:36:46
2020/08/19 22:36:47
2020/08/19 22:36:48
2020/08/19 22:36:49
2020/08/19 22:36:50
2020/08/19 22:36:51
2020/08/19 22:36:52
2020/08/19 22:36:53
2020/08/19 22:36:54
2020/08/19 22:36:55
2020/08/19 22:36:56
2020/08/19 22:36:57
2020/08/19 22:36:58
2020/08/19 22:36:59
2020/08/19 22:37:00
2020/08/19 22:37:01
2020/08/19 22:37:02
また、本当はこのようなコードはCPUを消費するためよくないのですが、sleepを使わない例もお見せします。
java
1import java.text.SimpleDateFormat;
2import java.util.Date;
3
4public class Main {
5
6 public static void main(String[] args) {
7
8 SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
9
10 long endTime = System.currentTimeMillis() + 30000;
11 long shownTime = 0;
12
13 while (endTime > shownTime) {
14 if (System.currentTimeMillis() < shownTime + 1000) continue;
15 shownTime = System.currentTimeMillis();
16 System.out.println(formatter.format(new Date(shownTime)));
17 }
18 }
19}
20