当前位置:嗨网首页>书籍在线阅读

14-其他说明

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

其他说明

在本案例中,虽然使用 addToPendingCount() 方法可以增加处理中的任务计数值,但是也可以使用其他方式来改变计数器的值。

  • setPendingCount() :该方法设置处理中的任务计数值。
  • compareAndSetPendingCount() :该方法接收两个参数。第一个参数是期望值,第二个参数是设置的新值。如果当前的计数值等于期望值,则将新值赋给计数器。
  • decrementPendingCountUnlessZero() :该方法在计数值不为0的情况下,使计数值减1。

CountedCompleter 类也包含其他管理任务完成的方法,具体如下所示:

  • complete() :该方法执行 onCompletion()方 法且试着结束其父任务,该过程与处理中的任务计数值相互独立。
  • onExceptionalCompletion() :该方法在调用 completeExceptionally() 方法或是 compute() 方法抛出异常时执行。可以重写该方法来处理异常。

本案例使用 join() 方法来等待任务执行完成并获取执行结果。也可以使用如下版本的 get() 方法来实现这些功能:

  • get(long timeout, TimeUnit unit) :该版本的 get() 方法会在一段时间内等待任务返回结果。如果超过给定时间且任务仍未返回结果,则该方法会返回空值。 TimeUnit 类是一系列常量的枚举: DAYSHOURSMICROSECONDSMILLISECONDSMINUTESNANOSECONDSSECONDS
  • join() 方法是不能中断的,如果中断了一个调用 join() 方法的线程,则该方法将会抛出一个 InterruptedException 异常。