Phi*_*ayo 1 java java.util.concurrent fire-and-forget
如何使用java.util.concurrency 实现" fire and forget "行为?我试过了:
ExecutorService executor = Executors.newSingleThreadExecutor();
public void push(Callable<Boolean> task) {
Future<Boolean> future = executor.submit(task);
future.get(timeout, timeoutUnit);
}
Run Code Online (Sandbox Code Playgroud)
但是get()阻止直到完成.该push()来电者是不感兴趣的任务的结果.
如果您必须忘记它,则不需要未来对象,即不关心线程的未来。:)
ExecutorService executor = Executors.newSingleThreadExecutor();
public void push(Callable<Boolean> task) {
executor.submit(task);
}
Run Code Online (Sandbox Code Playgroud)
或者如果您需要在以下时间之后使用 future:-
ExecutorService executor = Executors.newSingleThreadExecutor();
public void push(Callable<Boolean> task) {
someCollection.add(executor.submit(task)); // use futures later
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您根本不打算获得未来,则只需使用 Executor 中的执行并传递 Runnable 即可。
ExecutorService executor = Executors.newSingleThreadExecutor();
public void push(Runnable task) {
executor.execute(task);
}
Run Code Online (Sandbox Code Playgroud)
// 如果发生异常,执行将调用默认的异常处理程序,如果您在提交方法中没有获取 futures,则该异常处理程序可能会丢失。
| 归档时间: |
|
| 查看次数: |
9065 次 |
| 最近记录: |