Java调度算法(默认使用)—(操作系统调度算法)
- 同优先级线程组成先进先出队列(先到先服务),使用时间片策略。
- 堆高优先级,使用优先调度的抢占式策略。
线程的优先级等级(一共有10挡)
- MAX_PRIORITY:10
- MIN_PRIORITY:1
- NORM_PRIORITY:5 (默认优先级)`
获取和设置当前线程的优先级
getPriority();
获取
setPriority(int p);
设置
说明:高优先级的线程要抢占低优先级线程cpu的执行权。但是只是从概率上讲,高优先级的线程高概率的情况下被执行。并不意味着只有高优先级的线程执行完成以后,低优先级的线程才执行。
线程的生命周期
线程的五种状态:
- 新建:当一个Thread类或其子类的对象被声明并创建时,新的线程对象处于新建状态。
- 就绪:处于新建状态的线程被start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件,只是没分配到CPU资源。
- 运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run()方法定义了线程的操作和功能。
- 阻塞:在某种特殊情况下,被认为挂起或执行输入输出操作时,让出CPU并临时中止自己的执行,进入阻塞状态。
- 死亡:线程完成了它的全部工作或线程被提前强制性的中止或出现异常倒置导致结束。