gpt4 book ai didi

Java 线程不会运行,除非我把 Thread.sleep(1);

转载 作者:行者123 更新时间:2023-12-02 01:20:48 27 4
gpt4 key购买 nike

我有一段练习代码,当用户在键盘上输入代码时,它应该接受 1010 作为代码。除非我在 run()

中放置 Thread.sleep(1); ,否则不断检查代码输入是否正确的线程将不会运行

我想知道这背后的原因是什么。

第一类:

import java.util.Scanner;

public class Class1 {
private static boolean valid = true, accepted = false, exit = false;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);

newThread t1 = new newThread();

t1.start();
do {
try {
int code = Integer.parseInt(input.nextLine());
if(code == 1010)
accepted = true;
else
System.out.println("Please try again!");
}catch(Exception e) {
System.out.println("Please try again!");
}
}while(!exit);
}
public static boolean getValid() {
return valid;
}
public static void setValid(boolean input) {
valid = input;
}
public static boolean getAccepted() {
return accepted;
}
public static void setAccepted(boolean input) {
accepted = input;
}

}

新线程:


public class newThread extends Thread{
public void run() {

do {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(Class1.getAccepted())
Class1.setValid(false);
}while(Class1.getValid());
System.out.println("Code accepted");
}
}

预期没有Thread.sleep(1);:

1010

Code accepted

实际结果:

1010

最佳答案

如果没有 sleep ,newThread 会消耗所有 cpu 并且没有自然断点。在里面 Java Language Specification您可以阅读更多相关内容。

关于Java 线程不会运行,除非我把 Thread.sleep(1);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57743147/

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