14-其他说明
其他说明
在本案例中,虽然使用 addToPendingCount()
方法可以增加处理中的任务计数值,但是也可以使用其他方式来改变计数器的值。
setPendingCount()
:该方法设置处理中的任务计数值。compareAndSetPendingCount()
:该方法接收两个参数。第一个参数是期望值,第二个参数是设置的新值。如果当前的计数值等于期望值,则将新值赋给计数器。decrementPendingCountUnlessZero()
:该方法在计数值不为0的情况下,使计数值减1。
CountedCompleter
类也包含其他管理任务完成的方法,具体如下所示:
complete()
:该方法执行onCompletion()方
法且试着结束其父任务,该过程与处理中的任务计数值相互独立。onExceptionalCompletion()
:该方法在调用completeExceptionally()
方法或是compute()
方法抛出异常时执行。可以重写该方法来处理异常。
本案例使用 join()
方法来等待任务执行完成并获取执行结果。也可以使用如下版本的 get()
方法来实现这些功能:
get(long timeout, TimeUnit unit)
:该版本的get()
方法会在一段时间内等待任务返回结果。如果超过给定时间且任务仍未返回结果,则该方法会返回空值。TimeUnit
类是一系列常量的枚举:DAYS
、HOURS
、MICROSECONDS
、MILLISECONDS
、MINUTES
、NANOSECONDS
和SECONDS
。join()
方法是不能中断的,如果中断了一个调用join()
方法的线程,则该方法将会抛出一个InterruptedException
异常。