`
kanpiaoxue
  • 浏览: 1781286 次
  • 性别: 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连接超时的一种实现方法

    Linux 下 Socket 连接超时的一种实现方法 在 Linux 环境下,设置套接字(Socket)连接超时是一件非常重要的事情。下面我们将详细介绍 Linux 下 Socket 连接超时的一种实现方法。 首先,需要创建套接字,并将其设置...

    java.net.SocketTimeoutException: Receive timed out

    在Java的Socket编程中,我们可以通过设置Socket对象的`setSoTimeout(int timeout)`方法来指定一个超时时间,超过这个时间如果没有接收到数据,就会抛出这个异常。 在描述中提到的博文链接指向了一个具体的博客文章...

    springboot结合rabbitmq实现订单超时自动关闭

    3. 实现监听器:创建一个监听器类,用于消费RabbitMQ中的订单超时消息,并执行相应的业务逻辑(如关闭订单): ```java @Component public class OrderTimeoutListener { @RabbitListener(queues = "order_timeout...

    Java线程超时控制的实现.docx

    - 设置一个超时时间 `timeout`。 - 使用布尔变量 `isCanceled` 来判断是否需要取消计时。 - 创建一个自定义异常 `TimeoutException`,用于在超时发生时抛出。 - **主程序**: - 创建 `TimeoutThread` 实例,并...

    java超时控制

    JDBC的`Statement`对象有一个`setQueryTimeout()`方法,可以设定SQL查询的超时时间。当查询超过这个时间,JDBC驱动会抛出`SQLException`。 7. **FutureTask超时** `FutureTask`类也支持超时控制,通过`FutureTask...

    Nginx timeout超时配置详解

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

    resteasy设置timeout

    这个类可能实现了这样的功能,例如通过添加定时器来监控请求,并在超时时抛出异常或者返回一个特殊的错误响应。 对于工具的使用,开发者可以借助像Postman这样的API测试工具,或者集成测试框架如JUnit,来模拟请求...

    线程超时死掉

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

    java decompilation tool and handling request time out

    其中,JD-GUI是一个常用且直观的工具,它可以方便地查看Java字节码的源代码。 JD-GUI是一款独立的图形用户界面应用程序,允许开发者查看Java类文件的源代码。它不依赖于任何IDE,并提供了快速、简单的源代码浏览...

    BlockingQueue队列自定义超时时间取消线程池任务

    要实现自定义超时取消任务,我们可以结合`FutureTask`的`cancel`方法和`Future.get(long timeout, TimeUnit unit)`方法。`get`方法会阻塞直到任务完成或者超过指定的超时时间,如果超时,则抛出`TimeoutException`。...

    Session Timeout需求解決

    在IT行业中,"Session Timeout需求解决"是一个常见的问题,尤其对于Web应用而言。 Session是服务器端用来跟踪用户状态的一种机制,当用户登录后,服务器会为该用户创建一个唯一的Session ID,并将其保存在服务器端,...

    JSch - Java实现的SFTP(文件上传详解篇)

    JSch 是 Java Secure Channel 的缩写,JSch 是一个 SSH2 的纯 Java 实现。JSch 允许您连接到一个 SSH 服务器,并且可以使用端口转发、X11 转发、文件传输等,当然您也可以集成它的功能到您自己的应用程序。 SFTP 是...

    实现linux java ping 及traceroute 功能.rar

    以下是一个简单的Java `ping`模拟示例: ```java import java.io.IOException; import java.net.InetAddress; public class PingJava { public static void main(String[] args) throws IOException { ...

    time_out_program.zip_Time_time out softwa

    4. **并发编程与线程**:在多线程环境中,可以使用Java的`Thread.sleep()`来模拟超时,或者使用`Future.get(long timeout, TimeUnit unit)`方法获取异步任务的结果,如果超时则抛出`TimeoutException`。 5. **...

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

    Web容器,如Tomcat,提供了一个全局的配置选项来设定所有应用的默认Session超时时间。在Tomcat的`conf/web.xml`配置文件中,你可以找到`&lt;session-config&gt;`元素,并调整`&lt;session-timeout&gt;`子元素的值。默认值是30...

    timeout.zip

    "timeout.zip"这个文件名可能暗示着一个与超时错误相关的压缩包,它可能包含一些日志、源代码、测试数据或者解决问题的文档。下面我们将详细讨论与"timeout"相关的IT知识点。 1. **超时(Timeout)**: - 超时是...

    Java编程Webservice指定超时时间代码详解

    } } 在Java中,Webservice调用时指定超时时间是一个关键的设置,因为如果没有设定或者设定不当,可能导致程序在等待响应时无限制地阻塞,从而影响整体系统的稳定性和效率。上述代码片段展示了如何在Java中通过JDK...

    基于Java+netty内置时间轮工具处理大批量定时或超时任务工具源码.zip

    3. **任务接口与实现**:可能包含自定义的任务接口,如`Timeout`和`TimerTask`,需要了解它们的生命周期方法以及如何实现自己的业务逻辑。 4. **并发与线程安全**:因为`HashedWheelTimer`是线程安全的,所以理解其...

    socket-file-ftp-for-timeout.rar_ftp_ftp socket_socket file tcp_s

    在标题中提到的"socket-file-ftp-for-timeout.rar",可以理解为一个关于使用Socket实现FTP文件传输并包含超时功能的示例代码压缩包。"ftp_socket"指的是通过Socket接口实现FTP协议,"socket_file_tcp"表示使用TCP...

    java使用Jsoup连接网站超时的解决方法

    这个方法接受一个以毫秒为单位的整数参数,表示超时时间的长度。例如,如果你设置超时时间为5000毫秒(即5秒),那么Jsoup在尝试连接服务器或读取数据时,会等待最多5秒。如果超过这个时间还是无法完成操作,Jsoup将...

Global site tag (gtag.js) - Google Analytics