38-其他说明
其他说明
CompletionService
类可以执行 Callable
或是 Runnable
对象。在本案例中,虽然用了 Callable
对象,但是也可以提交 Runnable
类型对象。由于 Runnable
对象不返回执行结果,因此并不适用于本案例中的 CompletionService
类。
该类也提供了如下两个方法来获取执行完成的 Future
对象。
poll()
:无参的poll()
方法会检查队列中是否有Future
对象。如果队列为空,则该方法会立马返回null。否则该方法会返回并删除队列中的第一个元素。take()
:无参的take()
方法会检查队列中是否有Future
对象。如果队列为空,则该方法会阻塞当前线程直到队列不为空,否则会返回并删除队列中的第一个元素。
本案例使用 poll()
方法并指定了过期时间,从而控制 ReportProcessor
任务的结束。