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