打印是否阻止BufferedReader输入?

时间:2019-05-16 13:58:03

标签: java io bufferedreader

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

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

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);

}

https://imgur.com/iyIdWeA

1 个答案:

答案 0 :(得分:0)

在按Enter之前,您可以阅读单个字符。

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