当前位置: 代码迷 >> J2SE >> 求教多线程有关问题! 运行后不停的~抛错误
  详细解决方案

求教多线程有关问题! 运行后不停的~抛错误

热度:141   发布时间:2016-04-24 12:39:03.0
求教多线程问题! 运行后不停的~~~抛异常
程序目标是想实现: 用户在控制台输入内容, 程序接收到用户的输入以后,启动一个单独的线程, 这个线程的作用是延时10秒把这个内容回显到控制台, 在这期间用户可继续输入内容, 每次输入都启动一个线程.

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

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

Java code
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();        }     }}

Java code
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();                }            }        }    }}


------解决方案--------------------
你把流关了 还怎么写呢
------解决方案--------------------
Java code
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!");                    br.close();                    break; // exit                }                                //create and start sending thread                Thread nt = new Thread(new NetThread(input));                nt.start();            } catch (IOException e) {                e.printStackTrace();            }        }    }
------解决方案--------------------
Java code
 public static void main(String[] args){                       while(true){                //放这试下吧。              BufferedReader br = new BufferedReader(new InputStreamReader(System.in));             String input = null;            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();                }            }        }    }
  相关解决方案