【发布时间】:2019-05-16 13:58:02
【问题描述】:
我正在尝试并行执行我的代码,但现在遇到了问题。 没有并行执行的代码正在等待输入(1),然后他正在打印一些东西(2)。 现在我在计时器(task2)的帮助下并行执行我的代码,对于输入(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);
}
【问题讨论】:
-
就像我理解的那样,它在 1000 毫秒后开始,然后进入循环,等待 1000 毫秒,如果没有内部循环,它会进入,打印 -> 等待 1000 毫秒然后退出
-
你是说
in.readLine()返回不完整的行吗?即使您没有按 Enter 也有部分输入? -
如果我想写输入“test”,但我只能写“te”,然后打印带有“print”,“te”甚至不计算在内,只有当我写最后一个“st”用回车,“st”算作输入
-
这似乎不太可能。当您在整个输入提示中打印输出时,它可能看起来很奇怪,但它不应该弄乱您从该输入中读取的内容。
-
我添加了一张图片,输入是:“test”+enter 不中断,然后“te”等待打印,“st”+enter,最后只是写一些东西,直到打印会阻塞全部然后按回车imgur.com/iyIdWeA
标签: java io bufferedreader