java - 如果一段代码没有在一定的时间限制内返回,如何在 Java 中导致一段代码超时?

标签 java multithreading concurrency executorservice java.util.concurrent

我有以下连接到服务器的代码,发送请求,然后返回响应。

问题是,如果客户端无法连接到服务器,程序将永远不会通过这一部分

PayLoad payLoadFromServer = client.sendRequest();

我只是想知道防止程序卡住的最佳方法是什么,即如果客户端无法连接,我想在 5 秒后超时,并能够在程序中优雅地处理。注意我无法编辑客户端类。

public PayLoad queryServer() {
        try (final Client client = new Client("127.0.0.1", "8080")) {
            PayLoad payLoadFromServer = client.sendRequest();

            return payLoadFromServer;
        }
    }

非常感谢!

最佳答案

你应该使用方法 connect(SocketAddress endpoint, int timeout)java.net.Socket在你的 Client 类中。这是最好的解决方案,但可能存在其他解决方案。

关于java - 如果一段代码没有在一定的时间限制内返回,如何在 Java 中导致一段代码超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11793507/

相关文章:

java - future 和 promise 有什么区别?

c# - 对 .Net 任务进行排序

java - Java中信号量的实现

python - 'DupFd' 中的属性错误 'multiprocessing.resource_sharer' | Python 多处理 + 线程

java - 将资源和服务代码添加到 Jlink 镜像

c++ - 使用传递函数指针调用 _beginthreadx

c# - 留在队列中的项目的替代方案(线程消费者生产者)

java - EnumSet 的真正含义是什么?

java - Hibernate JPA 列 "NEXTVAL"未找到

java - 绘制应用程序内存和 CPU 性能指标 Java Netbeans