我有以下代码:执行人服务不会超时,并继续运行
def getIndustryData(String[] theIndustries) {
PrintWriter printWriter = new PrintWriter(new BufferedWriter(new FileWriter("result.txt")))
//Listens to Twitter statuses and carries out the following methods on the status
StatusListener listener = new StatusListener() {
@Override
void onStatus(Status status) {
printWriter.write(status.getLang() + "|||" + status.getText())
printWriter.println()
}
@Override
void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
}
@Override
void onTrackLimitationNotice(int numberOfLimitedStatuses) {
}
@Override
void onScrubGeo(long userId, long upToStatusId) {
}
@Override
void onStallWarning(StallWarning warning) {
}
@Override
void onException(Exception ex) {
}
}
TwitterStream stream = new TwitterStreamFactory().getInstance()
stream.addListener(listener)
FilterQuery fq = new FilterQuery()
fq.track(theIndustries)
ExecutorService executor = Executors.newSingleThreadExecutor()
Future<String> future = executor.submit(new Callable<String>() {
@Override
String call() throws Exception {
stream.filter(fq)
return null
}
})
try {
future.get(2, TimeUnit.MINUTES)
} catch (TimeoutException e) {
stream.removeListener(listener)
stream.shutdown()
future.cancel(true)
executor.shutdownNow()
}
}
我使用Twitter4J访问Twitter的API.I想写鸣叫文件2分钟,然后停止。
stream.filter(fq)
方法即使在规定的2分钟后仍然运行,并且永远不会达到TimeoutException。我想在2分钟后,异常将被捕获,我可以结束该方法,但这不会发生。
请张贴[MCVE。这段代码甚至不会编译。 –
@AndyTurner,您将需要Twitter API密钥才能运行代码 – kulsoompatel