`
kanpiaoxue
  • 浏览: 1754328 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java如何实现一个方法具有timeout的超时功能

 
阅读更多

 

参考地址:https://stackoverflow.com/questions/17233038/how-to-implement-synchronous-method-timeouts-in-java

 

原文的问题描述:

写道
I have an synchronous execution path which needs to either complete or timeout within a given time frame. Let's say I have a class with main() method in which I invoke methods A() which in-turn calls B() and that in-turn calls C() of same or different classes.....all synchronous without using an external resource like database , webservice or file system (where each of them could be timed out independently using a TxManager or respective timeout api's). So it's more like a CPU or memory intensive computation. How do I code for it's timeout in Java ?

I have looked at TimerTask but that more of making the flow async and for scheduling tasks. Any other suggestions ?

 

最佳答案:You should use ExecutorService to do that

ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(new Callable() {

    public String call() throws Exception {
        //do operations you want
        return "OK";
    }
});
try {
    System.out.println(future.get(2, TimeUnit.SECONDS)); //timeout is in 2 seconds
} catch (TimeoutException e) {
    System.err.println("Timeout");
}
executor.shutdownNow();

 

 

分享到:
评论

相关推荐

    Linux下Socket连接超时的一种实现方法

    本文详细介绍了目前各平台通用的设置套接字(Socket)连接超时的办法,介绍了Linux环境下的Socket连接超时的一种实现方法。

    Nginx timeout超时配置详解

    最近项目中用到了nginx,后台用的是Java, 发现有一个请求后台处理操过了1分钟,结果请求Status Code为504 Gateway Time-out. 理解了下nginx 所有timeout相关的配置,如下: keepalive_timeout HTTP 有一个 KeepAlive...

    线程超时死掉

    V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException 同上面的get功能一样,多了设置超时时间。参数timeout指定超时时间,uint指定时间的单位,在枚举类...

    使用Java异步编程实现一个简单的网络请求.txt

    首先,我们定义了一个URL地址和一个超时时间(TIMEOUT),然后使用ExecutorService创建了一个线程池,该线程池包含两个线程。接下来,我们通过调用executor.submit()方法提交了两个任务,分别对应GET和POST两种HTTP...

    关于System.Net.WebException The operation has timed out,即网络操作超时的异常

    绝大部分异常信息为:System.Net.WebException: The operation has timed out,即网络操作超时的异常

    详解SpringBoot中Session超时原理说明

    本篇文章主要介绍了详解SpringBoot中Session超时原理说明,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Ajax请求session超时处理流程

    自己写一个loadUrl()方法,不能使用jquery自带的load(). 当客户端调用loadUrl()超时,弹出一个登录框,并加一个背景层下面的整个浏览器.这时浏览器窗口内容不能变,只是上面加了一个登录框和一个背景层 当...

    Java-常见面试题.pdf

    wait(long timeout) 设定一个超时间隔,如果规定时间内没有获得锁就返回。 * notify():唤醒在该对象上等待的某个线程。 * notifyAll():唤醒在该对象上等待的所有线程。 * toString():转换成字符串,一般子类都有...

    Java设置session超时的几种方式总结

    主要介绍了Java设置session超时的几种方式总结的相关资料,需要的朋友可以参考下

    urlread 和 urlwrite 的重写:将 TIMEOUT 添加到两个 url 函数。-matlab开发

    两天前,在 MATLAB 新闻组中,我发现 Greggory 询问了一些关于“urlread”的问题,即缺乏 TIMEOUT 功能。 而这样的缺失,往往会导致网络繁忙或异常时,main函数很容易被卡住的尴尬和可怕的情况。 一开始,我尝试...

    Java中设置session超时(失效)的三种方法

    session的作用:request.getSession()可以帮你得到HttpSession类型的对象,通常称之为session对象,session对象的作用域为一次会话,通常浏览器不关闭,保存的值就不会消失,web.xml中有一个session time out的地方,...

    java-servlet-api.doc

    JavaTMservlets是一个不受平台约束的Java小程序,它可以被用来通过多种方法扩充一个Web服务器的功能。你可以把Servlet理解成Server上的applets,它被编译成字节码,这样它就可以被动态地载入并用效地扩展主机的处理...

    DWR.xml配置文件说明书(含源码)

    当你在客户端调用Blash.toString(reply)时,后台将采用java.util.date的默认构造方法创建一个实例.然后调用实例的tostring方法.客户端的javascript将返回给reply对象(此时reply是java.util.date的字符串形式) 3.5 The...

    springTranction

    spring事物的测试

    si-multiplex-timeout-test:Spring Integration 3.0.7-测试Multiplex超时

    si超时测试 Spring Integration 3.0.7-测试Multiplex超时 ...3.)创建了一个单元测试(TcpClientServerDemoTimeoutTest#testTimeout)以期望MessageTimeoutException。 结果: 运行超时单元测试时,它永远不会返回。

    Ajax请求在数据量大的时候出现超时的解决方法

    这就需要修改ExtJS的超时时间: 2种方法: 1:在Ajax请求的时候加:(timeout: 100000000)属性 代码如下: Ext.Ajax.request({ url: ‘foo.php’, success: someFn, failure: otherFn, timeout: 100000000,//

    urlping:用于 Ping URL 的 Java 实用程序

    URLPing URLPing 是一个简单的 Java 实用程序,用于 ping URL。... 第一种方法接受一个 URL 来 ping 并默认为 30 秒的超时。 除了要 ping 的 URL 之外,第二种方法还接受以秒为单位的超时间隔。 URLPi

    JAVA技术的网页内容智能抓取.pdf

    * multi-url下包含至少一个single-url元素,通过single-url元素的href属性设置url * wildcard-url属性包括href、startpos、endpos,这3个属性都是必须的 * target-regex属性包括root,该属性值将会被添加在通过这个...

    java高并发秒杀系统.rar

    idle-timeout: 18000 # 最大连接数,默认10 maximum-pool-size: 10 # 从连接池返回的连接自动提交 auto-commit: true # 连接最大存活时间,0表示永久存活,默认1800000(30分钟) max-lifetime: 1800000 # ...

    CyclicBarrier用法.docx

    CyclicBarrier是Java中的一个同步工具类,用于协调多个线程之间的同步。...await(long timeout, TimeUnit unit):让当前线程进入等待状态,直到所有线程都到达屏障或等待超时。 reset():重置屏障,使其可以继

Global site tag (gtag.js) - Google Analytics