关于Socket中超时的问题
我现在需要一个这样的实现:
1.有一个独立的线程负责监听inputStream,程序会阻塞在read方法上,有数据时读取,并处理,然后再次阻塞,片段如下:
while(true){
byte[] bs=new byte[512];
if(inputStream.read(bs)>0){
//处理
}
}
2.另有主线程提供send方法,可随时被调用,并由上述1中的子线程监听到响应并处理,代码段如下:
public void send(String msg){
outputStream.write(msg.getBytes());
}
3.希望对send之后的响应有一个超时机制,就是主线程调用send之后,如果xx秒后子线程没有接到响应,就超时处理,打断read方法的阻塞,跳出该循环,子线程结束。
本来是在子线程的while处用一个标志位进行控制的,可其实read方法还是阻塞在那,根本执行不到下一次循环,所以改标志位没用,我是希望有个设计方法能立即终止read的阻塞,还请大大们指教