使用java.util.concurrent 包,让我们有了一个快捷的的方式实现多线程调度。
在一个项目中要实现一个带优先级的的线程调度,可是Thread的priority属性并不能保证优先级高的线程对象优先调度
我选用的PriorityBlockingQueue来实现。PriorityBlockingQueue是个排序队列,要求放入的对象是可以排序的才行
第一步: 实现可排序的线程类
如:
public class TargetThread extends Thread implements Comparable<TargetThread>{
private Integer targetId;
private int frequency; //频率高的要先运行
/**
* Override equals 方法,以便于在TargetTable里的set里避免重复对象
*/
public boolean equals(Object obj) {
TargetThread oo = (TargetThread) obj;
return (oo.getTargetId().intValue() == this.targetId.intValue());
}
/**
* 排序比较频率高
*/
public int compareTo(TargetThread t) {
if(this.frequency < t.frequency) return -1;
if(this.frequency > t.frequency) return 1;
return 0;
}
public void run() {
// do something
}
}
第二步: 把执行的线程放入PriorityBlockingQueue中,项目要执行的线程在某个时刻可能上千个,这时放入队列后,频率高的就会排在前面,而不是先进先出了。
第三步:执行队列里的线程
TargetThread t = PriorityBlockingQueue.poll();
t.start();
这样,一个带优先级的队列就实现了,具体在调度的时候,还可以使用concurrent的Executor来run一个线程对象。
分享到:
相关推荐
智能变电站通信业务优先级及其队列调度方法.docx
为了调度多种实时性的任务,提出了双优先级队列调度算法,用于调度每个处理器上的任务。该算法设置2个优先级队列,其中高优先级队列用于调度实时任务,低优先级队列用于调度非实时任务,高优先级队列中的任务可抢占...
Java 队列 源码
概述1.1 进程优先级1.2 普通进程的调度1.2.1 静态优先级和基本时间片1.2.2 动态优先级和平均睡眠1.3 实时进程的调度1.4 内核空间优先级2.调度策略2.1 进程的抢占2.2 调度算法2.3 O(1)调度2.4 调度模型——机制与策略...
有时间片,优先级的进程调度 struct PCB{ int pname; int pri; int runtime; int waittime; struct PCB *next;.../*低优先级队列头指针*/ struct PCB *Lready; /*等待队列头指针*/ struct PCB *wait;
1.正确输出三种调度算法下,任务的执行顺序、每个任务占用CPU的时间以及优先级队列(反馈调度) 2.通过一个调度进程实现任务调度 3.有输出界面,在每个时间点输出任务状态、每个任务已经占用CPU时间和还需CPU时间...
为了支持家庭网络中多业务的要求,本文在支持多优先级队列调度算法的基础上令服务时间配额(服务率)随缓冲队列长度而变化,提出了一种基于反馈控制的服务时间自适应分配的队列公平调度算法。仿真结果表明该算法有效...
1.正确输出三种调度算法下,任务的执行顺序、每个任务占用CPU的时间以及优先级队列(反馈调度) 2.通过一个调度进程实现任务调度 3.有输出界面,在每个时间点输出任务状态、每个任务已经占用CPU时间和还需CPU时间,...
对于多队列,不同队列间具有不同的优先级,然而对于每队首元素又是采用动态的优先级定义。其中优先级有一定因素相关,这个不展开。
在区分服务体系中优先级队列WFQ的节点调度策略约束下,兼顾负载均衡需求,提出了QoS路由度量标准DCB以及路由算法DCBR。仿真试验结果表明,该算法在实现最短时延的同时,提高了网络吞吐能力,并在时延抖动性能上得到...
本文件是对操作系统进程多级反馈队列调度算法的设计与实现,算法以txt的形式输入输出,其中包含设计报告
模拟动态优先级调度算法,程序内有详细的中文注释,方便理解。
实现抢占式优先级队列的进程调度 优先级分配采用动态方式
进程状态State (3)进程优先级改变原则 进程在就绪队列中呆一个时间片,优先级加1 进程运行一个时间片,优先级减3 (4)为了清楚的观察各进程的调度过程,程序应将每个时间片的进程的情况显示。出来
一种FC交换机中优先级虚拟输出队列调度策略的研究,高杰,张海旸,随着行业需求的日益增长,带有优先级虚拟输出队的网络交换机的概念被提出,交换机中优先级虚拟输出队列的调度策略成为影响交换机
试验名称:进程调度模拟算法 试验内容:设计一个有N个进程并行的进程调度程序。 调度算法:采用最高优先数优先的调度算法。每个进程由一个进程控制块(PCB)表示。进程控制块可以包含以下信息:进程名、优先数、到达...
采用动态优先数。即进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数:在进程获得一次CPU后就将其优先数...“最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。
通过对DiffServ体系的4种优先级队列和优先级调度算法的分析,得出了动态优先级调度算法可以解决IP分组转发时的公平性问题。但随之而来的问题是IP分组转发时的超延迟现象。在确定出较精确的延迟门限标准和具体的实现...
进程调度时间片轮转+优先级进程调度(操作系统课程设计),用队列数据结构,C++实现。
当前运行态进程时间片运行完毕之后依据其优先级将其插入到对应就绪队列队尾中,判断高优先级队列是否为空,不空则取其对头的进程继续运行,空则判断低优先级队列取进程运行(若高低优先级队列度为空演示程序退出结束...