求教多线程问题! 运行后不停的~~~抛异常

login_user login_user 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
程序目标是想实现: 用户在控制台输入内容, 程序接收到用户的输入以后,启动一个单独的线程, 这个线程的作用是延时10秒把这个内容回显到控制台, 在这期间用户可继续输入内容, 每次输入都启动一个线程.

可是运行时, 当我输入第一个内容,回车后,控制台就开始不停(对!~是不停...)的抛Stream closed的Exception, 可是我并没有退出循环, 怎么会执行br.close()呢?

以下是程序的两个类的代码

package net;

public class NetThread implements Runnable{
String data = null;

//constructor
public NetThread(String data){
this.data = data;
}

//run method
public void run(){
try {
System.out.println("Start sending...");
Thread.sleep(10000); //delay time
System.out.println("Sending completely! The message is: " + data);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

package net;

import java.io.*;

public class Test {
public static void main(String[] args){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = null;

while(true){
try {
System.out.println("Please enter: ");
input = br.readLine(); //accept input from console
if(input.equals("quit")){
System.out.println("Quit successfully!");
break; // exit
}

//create and start sending thread
Thread nt = new Thread(new NetThread(input));
nt.start();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
...全文
评论 15
收藏 已收藏
分享
返回顶部
login_user
Java SE 62,621 成员 307,251 内容