2013-11-25 145 views
1

我创建一个线程(服务器)从输入(System.in)中读取字符串并向客户端发送输出,并且当我尝试关闭流时 我收到此错误:当我调用此方法时无法访问的代码此功能closeStream()是代码,请帮助:Java无法访问的代码

import java.io.*; 
public class ThreadWrite extends Thread{ 
     private PrintWriter output; 
     private BufferedReader inputServer; 
     private final boolean test=true; 
     public ThreadWrite(PrintWriter out) { 
      output = out; 
      inputServer = new BufferedReader(new InputStreamReader(System.in)); 
     } 

     public void run(){ 
      String send; 
      while(test){ 
       System.out.print("Server:"); 
       try { 
        send = inputServer.readLine(); 
        output.println(send); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
      closeStream(); 
     } 

     public void closeStream() throws Exception{ 
      inputServer.close(); 
      output.close(); 
     } 


} 

需要你的帮助

+1

因为您创建了无限循环。变量测试被分配为true,并且在代码中它无处变为false(因为您声明它为final,不能在btw中更改)。所以while循环之后的行将永远不会执行。 – Sajmon

回答

2

while(test)总是返回true,所以下面的while循环(closeStream();)的声明是不可达。

+0

谢谢,我忘了提供一个休息条件:D –

1

你永远不会改变boolean testfalse,你不能(因为其最终)因此,你永远不会从while环迁出。

的Java

1

你宣布testfinal,所以它的价值不能被改变,将继续true

因此在while的条件下,只有true仍然存在,并且没有办法,虽然可以永远结束(除了例外等)。因此之后while无法到达。

0

测试是一个真实的最终变量。你永远不离开

while(test)

循环。

0

您在while loop之外提到了closeStream(),条件始终为真,并且在您的while循环中没有声明会破坏它并达到closeStream()方法。