java : execute a method over a maximum period of time

标签 java multithreading methods jakarta-mail

我正在使用 JavaMail API ,Folder 类中有一个名为“搜索”的方法,有时执行时间过长。我想要的是在最长的时间段内执行此方法(例如最多 15 秒),这样我可以确定此方法不会运行超过 15 秒。

伪代码

messages = maximumMethod(Folder.search(),15);

是否必须创建一个线程来执行此方法并在主线程中使用 wait 方法?

最佳答案

最好的方法是创建一个单线程的 executor你可以用它提交可调用文件。返回值为 Future<?>你可以从中得到结果。你也可以说等待这么久才能得到结果。这是示例代码:

    ExecutorService service = Executors.newSingleThreadExecutor();
    Future<Message[]> future = service.submit(new Callable<Message[]>() {
        @Override
        public Message[] call() throws Exception {
            return Folder.search(/*...*/);
        }
    });

    try {
        Message[] messages = future.get(15, TimeUnit.SECONDS);
    }
    catch(TimeoutException e) {
        // timeout
    }

关于java : execute a method over a maximum period of time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7177666/

相关文章:

Java静态方法+类

java - 如何让 "Date"对象在每次调用时打印出不同的值?

java - 如何列出所有与maven不兼容的依赖版本?

java - 我可以让 Java 方法有参数但不需要传入参数吗?

java - 对线程安全的质疑

Java 线程 - 这是同步的正确使用吗

javascript - 在 JS 中明确定义时获取 "method undefined"

java - 为什么我无法重用InputStream?

java - 从正在运行的程序或 Java 中的转储中获取死锁检测

java - 设置 Java 线程的优先级