Java 打印定时线程

Java 打印定时线程,java,timer,Java,Timer,我正在完成以下任务: 考虑一个值为非负整数的共享计数器, 最初为零。时间打印线程将计数器递增一 并从执行开始每秒打印其值。A. 消息打印线程每十五秒打印一条消息。有 时间打印线程将通知消息打印线程 每一秒都在流逝。添加另一个打印消息的消息打印线程 每七秒钟发送一条不同的消息。必须这样做 无需修改时间打印线程实现 所有相关线程是否共享由更新的计数器对象 每秒打印线程的时间。打印线程运行的时间 通知其他线程在计数器对象每次更新时读取计数器对象 计数器,则每个消息打印线程将读取计数器 值,并查看其指定

我正在完成以下任务:

考虑一个值为非负整数的共享计数器, 最初为零。时间打印线程将计数器递增一 并从执行开始每秒打印其值。A. 消息打印线程每十五秒打印一条消息。有 时间打印线程将通知消息打印线程 每一秒都在流逝。添加另一个打印消息的消息打印线程 每七秒钟发送一条不同的消息。必须这样做 无需修改时间打印线程实现

所有相关线程是否共享由更新的计数器对象 每秒打印线程的时间。打印线程运行的时间 通知其他线程在计数器对象每次更新时读取计数器对象 计数器,则每个消息打印线程将读取计数器 值,并查看其指定的时间段是否已过;如果是的话,它会的 打印它的消息


这将输出我希望它输出的内容,但是当7秒和15秒的消息显示时,需求需要多个线程输出。我不知道如何使用多个线程来执行此操作。

在if条件之后,必须删除
“;”

  if(x%7 == 0);

检查以下代码

public static void main(String... args) {
        Thread thread = new Thread() {
            public void run() {
                int x = 0;
                while (true) {
                    x = x + 1;
                    System.out.print(x + " ");
                    if (x % 7 == 0)
                    {
                        System.out.println();
                        System.out.println("7 second message");
                    }
                    if (x % 15 == 0)
                    {
                        System.out.println();
                        System.out.println("15 second message");
                    }
                    try {
                        Thread.sleep(1000);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        thread.start();
    }
我的输出如下

1 2 3 4 5 6 7 
7 second message
8 9 10 11 12 13 14 
7 second message
15 
15 second message
16 17 18 19 20 21 
7 second message
22 23 24 25 26 27 ...

您必须删除“;”之后的if条件;该死,我怎么会错过呢?谢谢。我现在已经完成了,但仍然得到了相同的输出。我认为您遗漏了一些东西,请检查更新的代码。我知道现在发生了什么。一切正常。非常感谢你听到这个消息。由于一个愚蠢的错误,我被困了好一阵子。
public static void main(String... args) {
        Thread thread = new Thread() {
            public void run() {
                int x = 0;
                while (true) {
                    x = x + 1;
                    System.out.print(x + " ");
                    if (x % 7 == 0)
                    {
                        System.out.println();
                        System.out.println("7 second message");
                    }
                    if (x % 15 == 0)
                    {
                        System.out.println();
                        System.out.println("15 second message");
                    }
                    try {
                        Thread.sleep(1000);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        thread.start();
    }
1 2 3 4 5 6 7 
7 second message
8 9 10 11 12 13 14 
7 second message
15 
15 second message
16 17 18 19 20 21 
7 second message
22 23 24 25 26 27 ...