日期:2014-05-20  浏览次数:20715 次

一个socket输出的问题,不知道是否跟线程有关
我在一个线程run()里面,用socket得到一个输出流。PrintStream   out   =   new   PrintStream(s.getOutPutStream());如果直接在线程里面就使用Out,可以把数据输出到浏览器上。问题是我把out传到一个Action类,Action   ac   =   new   Action(out);如果通过这个Action输出,则Action里面的out失效!不知是什么原因?后来我又把socket也传进Action里面,显示socket已经被关闭,但是我在使用Action之前只先给另一个类Decode使用了,在Decode里面并没有关闭socket啊?

run(){
PrintStream   out   =   new   PrintStream(s.getOutPutStream);
//此处使用Out有效,比如Out.println( "hello ");
Decode   d   =   new   Decode(s);//这里面socket并没有关闭
Action   ac   =   new   Action(out);//问题在这里,Action里面out无效
}



------解决方案--------------------
应该是跟线程有关系,action只是一瞬间的事,out进去当然得关闭了
------解决方案--------------------
线程的问题,线程执行完后,相对于out也应该关闭了,如果在其它地方引用,当然无效了。