作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经搜索了一段时间,但我没有找到针对这个问题的具体独特解决方案,有些使用函数方法,如 .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/
我是一名优秀的程序员,十分优秀!