我的情况如下:
我正在实现一个服务器,该服务器必须在每个请求的指定超时期限内超时或产生响应。因此,从服务器的角度来看,确保每个请求都是响应(当然,由于传输层故障等,响应可能无法到达客户端)。
为了实现上述语义,每个请求都会产生一个线程(实际上是从线程池中检索一个可用的线程)并通过同步对象上的通知等待其响应。等待时间受到发送到 Object 的等待方法的超时参数的限制。生成的线程将请求委托给实际知道如何处理请求的对象。此对象的调用 API 是已知的,但没有已知的服务级别协议指定调用永远不会无限期挂起。(特别是在我的情况下,服务器实际上是一个 CORBA 客户端——但这不是重点。)
现在,我感兴趣的是,是否有办法让我以某种方式检测到该线程没有响应然后杀死它(中断它),即使我目前在方法调用上被阻塞?
顺便说一句,我知道我可以保留对线程对象的引用,并在预先指定的时间后调用它的 interrupt() 方法。不幸的是,这并不能确保“中断”语义......
谢谢大家