gpt4 book ai didi

java - Java 中的线程

转载 作者:行者123 更新时间:2023-12-02 07:34:34 29 4
gpt4 key购买 nike

我创建了一个简单的程序来测试 Java 中的线程。我希望它无限地打印我的数字,例如 123123123123123。不知道为什么,但目前它在一个周期仅完成 213 后停止。有人知道为什么吗?

public class Main {
int number;

public Main(int number){
}

public static void main(String[] args) {
new Infinite(2).start();
new Infinite(1).start();
new Infinite(3).start();
}
}

class Infinite extends Thread {
static int which=1;
static int order=1;
int id;
int number;
Object console = new Object();

public Infinite(int number){
id = which;
which++;
this.number = number;
}

@Override
public void run(){
while(1==1){
synchronized(console){
if(order == id){
System.out.print(number);
order++;
if(order >= which){
order = 1;
}
try{
console.notifyAll();
console.wait();
}
catch(Exception e)
{}
}
else {
try{
console.notifyAll();
console.wait();
}
catch(Exception e)
{}
}
}
try{Thread.sleep(0);} catch(Exception e) {}
}
}
}

最佳答案

每个 Infinite 实例都在其自己的 console 对象上同步,然后等待通知。一旦线程到达 console.wait(),它就不会继续。

您似乎希望它们在同一个对象上同步 - 因此您需要将 console 设为静态。

关于java - Java 中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2915337/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com