我正在做以下任务:
考虑一个共享计数器,其值为非负整数, 最初为零。时间打印线程将计数器递增1 并从执行开始每秒打印其值。一个 消息打印线程每十五秒打印一条消息。有 消息打印线程由时间打印线程通知为 每一秒都经过。添加另一个打印的消息打印线程 每七秒发一次不同的消息。必须这样添加 无需修改时间打印线程实现。
让所有涉及的线程共享由更新的计数器对象 时间打印线程每秒。时间打印线程会 每次更新时通知其他线程读取计数器对象 计数器,然后每个消息打印线程将读取计数器 值并查看其指定的时间段是否已经过去;如果是的话,它会 打印它的消息。
import java.lang.Class;
import java.lang.Object;
public class Main2 {
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();
}
}
这将输出我想要的内容,但是当7和15秒消息显示时,需求要求输出多个线程。我不能围绕如何使用多个线程来解决这个问题。
答案 0 :(得分:2)
如果条件允许,您必须删除";"
。
if(x%7 == 0);
和
if(x%15 == 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 ...