【发布时间】:2014-02-06 20:15:41
【问题描述】:
我有线程向套接字写入一些内容,然后开始等待响应。该线程需要在给定的时间内检索响应,例如 100 毫秒。 我的想法是创建读取器线程,该线程将从套接字读取并将响应存储在阻塞队列中。当阅读器完成工作并将对象放入队列时,第一个线程只是等待。如果读者在一段时间内一切正常,如果读者不这样做,我想抛出异常,它也可以。问题是当我在 TimeOutException 之后出现时,由于超时而没有从队列中取出的对象仍然存在,甚至可能刚刚准备好插入队列中。我只想要下一个对象。我应该如何跳过这条消息?或者可能有更好的方法来解决这个问题?
另外,连接是保持活动的,所以套接字超时是不合适的。
【问题讨论】:
-
据我所知,套接字超时只是一个告诉您读取阻塞时间过长的事件。可以忽略这个超时事件,继续阅读:socket连接没有改变。你试过这个吗?
-
"这个线程需要在给定的时间内获取响应,例如100毫秒。" 当读取超时时程序应该怎么做?
标签: java multithreading sockets concurrency timeout