Tôi có một Callable<String>
. Tôi muốn chạy nó định kỳ thông qua ScheduledExecutorService.scheduleAtFixedRate()
và để có được danh sách tất cả các Chuỗi đã được trả lại bằng lời gọi .call()
trên số điện thoại có thể gọi của tôi. Như scheduleAtFixedRate
không mất một Callable
(chỉ Runnable
s) Tôi cần phải tung ra một tùy chỉnh Runnable
rằng kết thúc tốt đẹp Callable
của tôi, một cái gì đó dọc theo những dòng:Định kỳ chạy một cuộc gọi qua ScheduledExecutorService
final Callable<String> myCallable = ....;
final ConcurrentLinkedQueue<String> results
= new ConcurrentLinkedQueue<String>();
Runnable r = new Runnable() {
@Override public void run() {
try {
results.add(myCallable.call());
} catch (Exception e) {
results.add(null); // Assuming I want to know that an invocation failed
}
}
};
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(r, 0, 1, TimeUnit.SECONDS);
Đương nhiên, tôi muốn tránh tung ra tùy chỉnh của riêng tôi thingies (đặc biệt là trong mã đa luồng), vì vậy tôi tự hỏi có một lớp JDK mà loại này tập hợp?
không, không có một tiện ích có sẵn trong jdk đặt kết quả Callable thành một bộ sưu tập dành cho bạn. – jtahlborn
Đó là những gì tôi nghĩ. Cảm ơn. –