当前位置:首页 » 编程语言 » java调度

java调度

发布时间: 2022-01-11 22:13:19

java线程调度的策略是什么

时间片轮转 加 优先级
你可以这样试
在一个线程里死循环输出"1",
第二个输出"2"
......
然后设置他们的优先级,并且run.你可以看下屏幕上的输出结果
屏幕跳得很快,但你应该能看清楚优先级最高的那个数字...

㈡ java代码,多机调度问题,怎么解释

多机调度问题的Java实现(贪心算法

具体问题描述以及C/C++实现参见网址

[java]viewplainprint?
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.LinkedList;
importjava.util.List;

/**
*多机调度问题--贪心算法
*@authorLican
*
*/
publicclassJobMachine{
{
intid;//作业的标号
inttime;//作业时间
publicJobNode(intid,inttime){
this.id=id;
this.time=time;
}
@Override
publicintcompareTo(Objectx){//按时间从大到小排列
inttimes=((JobNode)x).time;
if(time>times)return-1;
if(time==times)return0;
return1;
}
}
{
intid;//机器的标号
intavail;//机器空闲的时间(即机器做完某一项工作的时间)
publicMachineNode(intid,intavail){
this.id=id;
this.avail=avail;
}
@Override
publicintcompareTo(Objecto){//升序排序,LinkedList的first为最小的
intxs=((MachineNode)o).avail;
if(avail<xs)return-1;
if(avail==xs)return0;
return1;
}
}
publicstaticintgreedy(int[]a,intm){
intn=a.length-1;//a的下标从1开始,所以n(作业的数目)=a.length-1
intsum=0;
if(n<=m){
for(inti=0;i<n;i++)
sum+=a[i+1];
System.out.println("为每个作业分别分配一台机器");
returnsum;
}
List<JobNode>d=newArrayList<JobNode>();//d保存所有的作业
for(inti=0;i<n;i++){//将所有的作业存入List中,每一项包含标号和时间
JobNodejb=newJobNode(i+1,a[i+1]);
d.add(jb);
}
Collections.sort(d);//对作业的List进行排序
LinkedList<MachineNode>h=newLinkedList<MachineNode>();//h保存所有的机器
for(inti=1;i<=m;i++){//将所有的机器存入LinkedList中
MachineNodex=newMachineNode(i,0);//初始时,每台机器的空闲时间(完成上一个作业的时间)都为0
h.add(x);
}
inttest=h.size();
for(inti=0;i<n;i++){
Collections.sort(h);
MachineNodex=h.peek();
System.out.println("将机器"+x.id+"从"+x.avail+"到"+(x.avail+d.get(i).time)+"的时间段分配给作业"+d.get(i).id);
x.avail+=d.get(i).time;
sum=x.avail;
}
returnsum;
}
publicstaticvoidmain(String[]args){
int[]a={0,2,14,4,16,6,5,3};
intm=3;
intsum=greedy(a,m);
System.out.println("总时间为:"+sum);
}
}
/**
运行结果:

将机器1从0到16的时间段分配给作业4
将机器2从0到14的时间段分配给作业2
将机器3从0到6的时间段分配给作业5
将机器3从6到11的时间段分配给作业6
将机器3从11到15的时间段分配给作业3
将机器2从14到17的时间段分配给作业7
将机器3从15到17的时间段分配给作业1
总时间为:17
*/

㈢ java调度是什么

貌似在操作系统里面听过这个词,难道是实现调度机制,先执行那个后执行那个??

㈣ java 什么是调度器scheler

几种任务调度的 Java 实现方法与比较,一看便知:
http://www.ibm.com/developerworks/cn/java/j-lo-taskschele/

㈤ 用java处理机调度该怎么做

就是利用线程。。
很麻烦。

㈥ java的多线程是OS调度还是JVM调度的呢

现在java线程和操作系统线程之间的对应关系有三种:
多对一、一对一、多对多

多对一就是所说的“Green thread”,一个java应用程序
被当作一个任务被操作系统调度,而这个java应用程序里
的多个线程则由虚拟机调度执行。也可以说由虚拟机选出
一个多线程java程序里的一个线程作为活动线程,这个线
程再作为操作系统的一个任务被操作系统调度。

一对一就是一个java线程对应一个操作系统线程了,即同
一个多线程java程序里的所有线程都由操作系统统一调度。

多对多还不是很明白。。。

㈦ 怎样用java实现CPU的调度要用到什么类

cpu调度及内存分配算法
写的一个操作系统的实验,篇幅原因,只给了内存分配和回收代码.

/**
单 位:中南大学软件学院0501班
文 件:CpuScheler.java
项 目:操作系统cpu调度算法模拟程序
作 者:刘欣
创建时间:2007年5月14日
**/

public static void InitMem(){
MemTable = new memory();
MemTable.Setmem_beg(0);
MemTable.Setmem_size(100);
MemTable.Setmem_state(0);
}
public boolean InitMemory(Pcb temp){
memory mem_temp,last,now;
last = MemTable;
mem_temp = new memory(temp.GetName(),temp.Getmem_size());
boolean flag = true;
if(mem_temp.Getmem_size() > 100 ){
c.tcpuinfo.setText(mem_temp.GetPcd_name()+"is too big");
flag = false;
}
if(MemTable == null){
return flag;
}

if(mem_temp.Getmem_size() + nowsize > 100){
c.tcpuinfo.setText("memory has been full please wait");
flag = false;
}

if(MemTable.Getmem_state() == 0){// if the first is empty;
if(MemTable.Getmem_size() > mem_temp.Getmem_size()){
mem_temp.next = MemTable;
mem_temp.Setmem_beg( last.Getmem_beg() );
mem_temp.Setmem_state(1);
MemTable.Setmem_beg(mem_temp.Getmem_beg() + mem_temp.Getmem_size());
MemTable.Setmem_size( MemTable.Getmem_size()-mem_temp.Getmem_size() );
MemTable = mem_temp;
nowsize += mem_temp.Getmem_size();
return flag;
}
if (MemTable.Getmem_size() == mem_temp.Getmem_size()){
// MemTable.SetPcd_name(mem_temp.GetPcd_name());
mem_temp = MemTable;
mem_temp.Setmem_state(1);
mem_temp.next = MemTable;
nowsize += mem_temp.Getmem_size();
return flag;
}
}
// begin obtain the other;
if(last != null){
now = last.next;
while(now != null){// search the teble for sutible memory;
if(now.Getmem_state() == 0){// if the first is empty;
if(now.Getmem_size() > mem_temp.Getmem_size()){
mem_temp.next = now;
mem_temp.Setmem_beg( now.Getmem_beg() );
mem_temp.Setmem_state(1);
now.Setmem_beg(mem_temp.Getmem_beg() + mem_temp.Getmem_size());
now.Setmem_size( now.Getmem_size()-mem_temp.Getmem_size() );
last.next = mem_temp;
nowsize += mem_temp.Getmem_size();
return flag;
}
else if (now.Getmem_size() == mem_temp.Getmem_size()){
now.SetPcd_name(mem_temp.GetPcd_name());
mem_temp = now;
mem_temp.Setmem_state(1);
last.next = mem_temp;
nowsize += mem_temp.Getmem_size();
return flag;
}
}
last = now;
//if(last != null){
now = now.next;
//}
}
}
return flag;
}

public void ReleaseMem(Pcb Temp){
memory mem_temp,last,now;
mem_temp = new memory(Temp.GetName(),Temp.Getmem_size());
if(MemTable == null){
c.tcpuinfo.setText("无内存可释放");
//return false;
}
last = MemTable;
now = last.next;
if (MemTable.GetPcd_name() == mem_temp.GetPcd_name()){//如果第一个就是要释放的分区;
MemTable.Setmem_state(0);
MemTable.SetPcd_name(null);
if(now != null && now.Getmem_state() == 0 ){//如果后邻接分区也是空闲的;
MemTable.Setmem_size(MemTable.Getmem_size() + now.Getmem_size());

MemTable.SetPcd_name(null);
nowsize -= mem_temp.Getmem_size();
MemTable.next = null;
// return true;
}
}
while (now != null){//在链表中寻找要释放的分区;
if(now.GetPcd_name() == mem_temp.GetPcd_name()){//找到;
nowsize -= mem_temp.Getmem_size();
now.Setmem_state(0);
if(now.next != null && now.next.Getmem_state() == 0){//查看后面相邻结点是否有空闲;
last.next = now.next;
now.next.Setmem_beg(now.Getmem_beg());
now.next.Setmem_size(now.Getmem_size() + now.next.Getmem_size());
now = last.next;
now.SetPcd_name(null);
}
if(last.Getmem_state() == 0){//查看前面相邻结点是否有空闲;
last.next = now.next;
last.Setmem_size(last.Getmem_size() + now.Getmem_size());
last.SetPcd_name(null);
now = last.next;
// now.SetPcd_name(null);
}
}
last = now;
now = now.next;
}
}

㈧ java线程调度

就绪状态是只要CPU有空闲随时都可以执行,处于就绪状态;
而阻塞状态是需要外界激活,可能是时间、可能是满足某一条件,他才能激活运行,就算CPU有空闲,也需要满足条件才会执行。

㈨ 急求JAVA线程调度算法

这个才20分?哥没兴致为这么点分熬夜

热点内容
如何提高三星a7安卓版本 发布:2024-09-20 08:42:35 浏览:658
如何更换服务器网站 发布:2024-09-20 08:42:34 浏览:305
子弹算法 发布:2024-09-20 08:41:55 浏览:283
手机版网易我的世界服务器推荐 发布:2024-09-20 08:41:52 浏览:811
安卓x7怎么边打游戏边看视频 发布:2024-09-20 08:41:52 浏览:157
sql数据库安全 发布:2024-09-20 08:31:32 浏览:88
苹果连接id服务器出错是怎么回事 发布:2024-09-20 08:01:07 浏览:502
编程键是什么 发布:2024-09-20 07:52:47 浏览:651
学考密码重置要求的证件是什么 发布:2024-09-20 07:19:46 浏览:477
电脑主服务器怎么开机 发布:2024-09-20 07:19:07 浏览:728