私は、次のコードを持っている:私は2分間のファイルへのつぶやきを書き込み、その後、停止したいTwitterのAPI.IにアクセスするにはTwitter4Jを使用していますエグゼキュータ・サービスはタイムアウトし、実行を継続していません
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()
}
}
。
stream.filter(fq)
メソッドは、指定された2分後に実行され、TimeoutExceptionには決して達しません。私は2分後に例外がキャッチされると思っていましたが、私はこのメソッドを終了することができましたが、これは起こりません。
のようなものである
最も簡単な(最高おそらくない)は、[MCVE]を投稿してください。このコードはコンパイルされません。 –
@AndyTurner、コードを実行するにはTwitter APIキーが必要です – kulsoompatel