用户级调度
可以提供的调度方式:
- 调整线程优先级:Java线程有优先级,优先级高的线程获得较多的运行机会(运行时间);
static int Max_priority 线程可以具有的最高优先级,值为10;
static int MIN_PRIORIYT 线程可以具有的最低优先级,值为1;
static int NORM_PRIORITY 分配给线程的默认优先级,值为5;
Thread类的setPriority()和getPriority()方法分别用来设置和获取线程的优先级; - 线程睡眠:Thread.sleep(long millins)使线程转到阻塞状态;
- 线程等待:Object.wait()方法,释放线程锁,使线程进入等待状态,
直到被其他线程唤醒(notify()和notifyAll()); - 线程让步:Thread.yeild()方法暂停当前正在执行的线程,使其进入等待执行状态,把执行机会让给相同优先级或更高优先级的线程,如果没有较高优先级或相同优先级的线程,该线程会继续执行;
- 线程加入:join()方法,在当前线程中调用另一个线程的join()方法,
则当前线程转入阻塞状态,知道另一个进程运行结束,当前线程再有阻塞状态转为就绪状态;
系统级调度
主要指系统在特定的时机自动进行调度,主要说明一下可运行状态到运行状态的调度,这个是OS的调度,主要涉及的调度算法
实时系统:
FIFO(First Input First Output,先进先出算法),
SJF(Shortest Job First,最短作业优先算法),
SRTF(Shortest Remaining Time First,最短剩余时间优先算法)。
交互式系统:
RR(Round Robin,时间片轮转算法),
HPF(Highest Priority First,最高优先级算法)。
基于时间片的优先级的调度算法
本人才疏学浅,如有错误,烦请指出,谢谢!