并发编程--在执行器中控制任务的完成

来源:互联网 发布:优化营商环境建议 编辑:程序博客网 时间:2024/05/05 06:30

FutureTask类提供了一个名为done的方法,允许在执行器中的任务执行结果之后,还可以执行一些代码。这个方法可以被用来执行一些后期处理操作,比如:产生报表,通过邮件发送结果或释放一些系统资源。当任务执行完成是受FutureTask类控制时,这个方法在内部被FutureTask类调用。在任务结果设置后以及任务的状态已改变为isDone之后,无论任务是否被取消或正常结束,done方法才被调用。

默认情况下,done方法的实现为空,即没有任务具体的代码实现,我们可以覆盖FutureTask类并实现done方法来改变这种行为。

下面我们通过一个例子看看FutureTask的奥秘



这里我们自定义了类ResultTask继承了FutureTask,FutureTask是一个泛型接口,ResultTask覆盖了FutureTask类的done方法,当ResultTask被取消或者完成时会自动调用该方法,当我们要创建ResultTask时,我们需要先创建Callable对象,Callable对象作为参数创建ResultTask对象,这里主线程先休眠1秒,让其他线程先执行,有些线程执行完成了调用ResultTask对象的isDone方法为true,没完成的为false。

0 0
原创粉丝点击