gpt4 book ai didi

java - 如何在 Java 中为公共(public)方法超时?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:18 25 4
gpt4 key购买 nike

我已经搜索了一段时间,但我没有找到针对这个问题的具体独特解决方案,有些使用函数方法,如 .setTimeout(...) 左右,但我只想将超时设置为 public 之一我项目中的方法。为什么?因为在代码中,我向您展示了底部,有时我在发布我的 wordpress 帖子的网站上没有答案,它会杀死所有预定的发布处理程序。

public void blogPublish(String articleTitle, String articleText, Date pubDate, String sourceDomain, String sourceAuthor, String blogCategory) throws XmlRpcFault{
String fullArticleContent = articleText;
XmlRpcArray categoryArray = new XmlRpcArray();
categoryArray.add(blogCategory);
this.post = new Page();
this.post.setTitle(articleTitle);
this.post.setDescription(fullArticleContent);
this.post.setDateCreated(pubDate);
this.post.setCategories(categoryArray);
String newPostIds = this.WP.newPost(post, true);
int newPostId = Integer.valueOf(newPostIds).intValue();
Page postNow = WP.getPost(newPostId);
System.out.println("Article Posted. Title=> "+ articleTitle);
}

如何使整个 blogPublish 函数超时?如果 5 秒后我仍然没有从我的网站回复已完成发布,我需要跳过它,因为那一刻它太慢或无法访问。

最佳答案

看看SimpleTimeLimiter.callWithTimeout来自 Guava 。

在您的情况下,它可能看起来类似于:

final String articleTitle = ...;
final String articleText = ...;
final Date pubDate = ...;
final String sourceDomain = ...;
final String sourceAuthor = ...;
final String blogCategory = ...;
final SomeClassOfYours someClassOfYours = ...;

Callable<Void> callable = new Callable<Void>() {
public Void call() throws XmlRpcFault {
someClassOfYours.blogPublish(articleTitle, articleText, pubDate, sourceDomain, sourceAuthor, blogCategory);
}
}
new SimpleTimeLimiter().callWithTimeout(callable, 5, TimeUnit.SECONDS, true);

关于java - 如何在 Java 中为公共(public)方法超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16319882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com