2

我正在寻找一种方法来等待并在特定 Runnable 在执行程序中完成执行时收到通知。

我发现一个FutureTask有一个方法get,但是,它返回一个值。我的程序不期望返回值;有没有类似 FutureTask 的不需要返回值的数据结构?几乎像 FutureRunnable?

谢谢!

4

2 回答 2

2

当任务完成时,没有任何机制(甚至理论上没有)会以某种方式“通知父线程”。首先,您submit无法从其发布任务的线程成为ExecutorService内部线程的父线程;其次,如果您的调用线程不是专门用于侦听此类事件,则它不能从外部“插入”,中断它正在做的任何事情并接收通知。

遗憾的是,使用标准 Java 的ExecutorService API,您无法通过回调获得异步通知;你得到的只是轮询方法和阻塞方法。

于 2013-05-27T14:02:54.003 回答
1

也许这种方法是你需要的。

FutureTask 在您提交 Runnable 时由 Executor 返回。

示例:

public class MyTask implements Runnable
{
    @Override
    public void run()
    {
        ...
    }
}

ExecutorService s = Executors.newSingleThreadExecutor();
Future<?> submit = s.submit(new Task());
于 2013-05-27T13:57:54.277 回答