import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.TimeUnit;
/**
* PriorityBlockingQueue
*
* 这是一个很基础的优先级队列,它具有可阻塞的读取操作。下面是一个示例,其中在优先级队列中的对象是按照优先级
* 顺序从队列中出现的任务。PrioritizedTask被赋予了一个优先级数字,以此来提供这种顺序。
*/
/**
* 与前一个示例相同,PrioritizedTask对象的创建序列被记录在sequeue List中,用于和实际的执行顺序比较。run()
* 方法将休眠一小段随机的时间,然后打印对象信息,而EndSentinel提供了和前面相同的功能,要确保它是队列中最后
* 一个对象
*
*
* @create @author Henry @date 2017-1-5
*/
class PrioritizedTask implements Runnable, Comparable<PrioritizedTask> {
private Random rand = new Random(47);
private static int counter = 0;
private final int id = counter++;
private final int priority;
protected static List<PrioritizedTask> s
Java 多线程 优先级队列 PriorityBlockingQueue
最新推荐文章于 2024-06-17 09:13:52 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)