Java 如何检查控制台输入中是否写入了内容?

Java 如何检查控制台输入中是否写入了内容?,java,Java,如何检查控制台输入中是否写入了内容?如果不是,代码将继续运行,但如果我将编写,那么会发生新的事情吗?可能吗 Scanner k2sk; k2sk = new Scanner(System.in); k2sk.nextLine(); 但是代码会一直等到我写东西时才开始运行。如果您希望在读取输入后保持线程运行,我建议您使用一个单独的线程异步读取输入: 根据您提供的内容,您的程序将在k2sk.nextLine()处阻塞直到控制台中出现某些内容。虽然从技术上讲它是正确的,但这意味着除非是多线程的,否则

如何检查控制台输入中是否写入了内容?如果不是,代码将继续运行,但如果我将编写,那么会发生新的事情吗?可能吗

Scanner k2sk;
k2sk = new Scanner(System.in);
k2sk.nextLine();

但是代码会一直等到我写东西时才开始运行。如果您希望在读取输入后保持线程运行,我建议您使用一个单独的线程异步读取输入:

根据您提供的内容,您的程序将在
k2sk.nextLine()处阻塞直到控制台中出现某些内容。虽然从技术上讲它是正确的,但这意味着除非是多线程的,否则程序将永远挂起,或者直到终止

解决这个问题的一种方法是使程序多线程化,但这可能超出了程序的范围


另一个解决方案是尝试使用实际的控制台类。应该对此提供一些见解,但这只有在您的程序围绕着与用户交互(如按顺序提示用户输入信息)的情况下才有效。

如果您想等待用户输入,同时又不想等待,只需将该任务分配给另一个
线程即可

在这里,我做了一个简短的例子,希望它会有用:

import java.util.Scanner;
public class TestInput {

    public static void main(String[] aa)
    {
         new Thread(new T1()).start();
         System.out.println("MOVED FURTHER");
    }

    public static class T1 implements Runnable
    {

        public void run() {

            Scanner k2sk;
            k2sk = new Scanner(System.in);
            k2sk.nextLine();
            System.out.println("DONE");
        }
    }
}

k2sk=新扫描仪(系统英寸);和k2sk.nextLine(),但代码要等到我写something@user2610533把它加到问题的主体中。那么你是在问如何在不阻塞程序执行的情况下获取输入@user2610533您是否尝试过使用其他线程??