线程调度之用户级调度和系统级调度

用户级调度

可以提供的调度方式:

  1. 调整线程优先级:Java线程有优先级,优先级高的线程获得较多的运行机会(运行时间);
    static int Max_priority 线程可以具有的最高优先级,值为10;
    static int MIN_PRIORIYT 线程可以具有的最低优先级,值为1;
    static int NORM_PRIORITY 分配给线程的默认优先级,值为5;
    Thread类的setPriority()和getPriority()方法分别用来设置和获取线程的优先级;
  2. 线程睡眠:Thread.sleep(long millins)使线程转到阻塞状态;
  3. 线程等待:Object.wait()方法,释放线程锁,使线程进入等待状态,
    直到被其他线程唤醒(notify()和notifyAll());
  4. 线程让步:Thread.yeild()方法暂停当前正在执行的线程,使其进入等待执行状态,把执行机会让给相同优先级或更高优先级的线程,如果没有较高优先级或相同优先级的线程,该线程会继续执行;
  5. 线程加入:join()方法,在当前线程中调用另一个线程的join()方法,
    则当前线程转入阻塞状态,知道另一个进程运行结束,当前线程再有阻塞状态转为就绪状态;

系统级调度

主要指系统在特定的时机自动进行调度,主要说明一下可运行状态到运行状态的调度,这个是OS的调度,主要涉及的调度算法
实时系统:
FIFO(First Input First Output,先进先出算法),
SJF(Shortest Job First,最短作业优先算法),
SRTF(Shortest Remaining Time First,最短剩余时间优先算法)。
交互式系统:
RR(Round Robin,时间片轮转算法),
HPF(Highest Priority First,最高优先级算法)。
基于时间片的优先级的调度算法

本人才疏学浅,如有错误,烦请指出,谢谢!

发布了68 篇原创文章 · 获赞 2 · 访问量 1661

猜你喜欢

转载自blog.csdn.net/weixin_45923633/article/details/105772136