java - print 阻塞 BufferedReader 输入?

标签 java io bufferedreader

我正在尝试并行执行我的代码,但现在遇到了问题。 没有并行执行的代码正在等待输入(1),然后打印出一些东西(2)。 现在,我在计时器(任务2)的帮助下并行执行代码,对于输入(1),我得到了另一个循环。

现在,如果我尝试写下一些内容,但速度不够快,则输入不会读取整个输入,而整个输入会被任务2 的打印输出中断。

static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
static PrintStream out = new PrintStream(System.out);

static void test1(BufferedReader in, PrintStream out) throws IOException {
    String input = in.readLine();
    if (input.equals("test"))
        System.out.println("true input");
    else System.out.println("false input");
}

public static void main(String[] args) throws IOException {
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            while (true) {
                System.out.println("print"); 
                Thread.sleep(1000);}}}, 1000);
    while (true)
        test1(in, out);

}

/image/nc3fL.jpg

最佳答案

您可以读取单个字符,直到按 Enter 键为止。

StringBuilder strBuilder = new StringBuilder();
char ch;
while((ch = in.read()) != '\n'){
    strBuilder.append(ch);
}
String input = strBuilder.toString();

关于java - print 阻塞 BufferedReader 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56170304/

相关文章:

java - 检测你是在Application中的主进程还是远程服务进程

python - 为什么读取一个字节比从文件中读取 2、3、4……字节慢 20 倍?

java - 读取txt并保存到数组中,java

java - 在没有库的情况下读取 Java 中的 PKCS#1 或 SPKI 公钥

java - Java 中的字符编码不起作用

java - 当到达最后一个文本时重复数组?

java - 我可以使用 Java 操作同一文件中的混合文本/二进制数据吗?

linux - 从脚本中运行命令时的 Bash 进度条

java - Java中可以使用bufferedreader来复制arxml文件吗?

Java 将 BufferedReader、DataOutputStream 和 Sockets 传递给可运行线程类会导致写入流时出现套接字异常