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

08-结果分析

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

结果分析

把一个普通执行器转变为一个基于优先级的执行器是很简单的:只需传递一个 PriorityBlockingQueue 对象,其泛型参数为 Runnable 接口。但由于此执行器的特殊性,因此应该知道所有存储在一个优先级队列中的对象都必须实现 Comparable 接口。

先前实现的 MyPriorityTask 类之所以实现了 Runnable 接口,是因为它成了一个任务类;该类还实现了 Comparable 接口,此举则是为了使其对象能够存储在优先级队列中。如果一个任务的优先级字段有更大的值,则它会更早地执行。 compareTo() 方法决定了任务在队列中的执行顺序。在 Main 类中,向执行器传递了20个不同优先级的任务。传递给执行器的第一个任务是第一个被执行的。只要该执行器是空闲的,且正在等待任务加入,那么在新任务到达时,它就会立刻执行第一个新任务。由于创建了具有4个线程的执行器,因此前4个任务都会作为第一个任务来执行。然后,其余任务根据它们的优先级来执行。

本案例的执行过程如下图所示。

61.png