我有一个接口方法boolean right(),如果它在一秒钟内没有“回答”,它应该返回false.
解决方法
@H_404_5@ 是的,这可以用例如java.util.concurrent.Future<V>
(表示类型V的异步计算结果的标准接口),结合方法
get(long timeout,TimeUnit unit)
.除其他异常外,该方法可能抛出TimeoutException,但在正常执行时返回计算结果.
在这种情况下,您需要一个Future< Boolean>,在try-catch块中使用get(1,TimeUnit.SECONDS),根据您的规范处理TimeOutException.
可用的具体实现是FutureTask<V>
和SwingWorker<T,V>
.如果这是在Swing应用程序的上下文中,那么您将要使用后者.
也可以看看
> Effective Java 2nd Edition,Item 68:首选执行程序和任务到线程
> Concurrent Programming with J2SE 5.0
> Java Tutorials/Concurrency
> Java Tutorials/Swing/How to use Threads – 如果您使用Swing,请阅读重要内容!