哪个线程的优先级比较高,抢到的cpu时间片的概率就高一点。
java采用的就是抢占式的调度方法
1、java中是关于优先级的
①、setPriority(int newPriority)
更改此线程的优先级。
②、int getPriority
返回此线程的优先级
代码示例:
- public class ThreadTest11 {
- public static void main(String[] args) {
- System.out.println("最高优先级" + Thread.MAX_PRIORITY);
- System.out.println("最低优先级" + Thread.MIN_PRIORITY);
- System.out.println("默认优先级" + Thread.NORM_PRIORITY);
- //获取当前线程的优先级
- Thread currentThread = Thread.currentThread();
- System.out.println("获取当前线程的优先级" + currentThread.getPriority());
- Thread t=new Thread(new Thread11());
- t.setName("t");
- t.setPriority(4);
- System.out.println("t线程的优先级是"+t.getPriority());
- }
- }
- class Thread11 implements Runnable{
- @Override
- public void run() {
- System.out.println(Thread.currentThread().getName()+"线程的默认优先级是"+Thread.currentThread().getPriority());
- }
- }
输出:
- 最高优先级10
- 最低优先级1
- 默认优先级5
- 获取当前线程的优先级5
- t线程的优先级是4
③、 静态方法:public static void yield()
对调度程序的一个暗示,即当前线程愿意产生当前使用的处理器。 调度程序可以自由地忽略这个提示。yield()不是阻塞,相当于回到就绪!
④、void join()合并线程
举例:
- calss Thread01 extends Thread{
- public void do(){
- Thread2 t=new Thread02;
- t.join//在此处当前线程进入阻塞,t线程执行,t线程执行之后,执行当前线程
- }
- }
- class Thread2 extends Thread{
-
- }
SCALA 复制 全屏
平均分配cpu时间片,每个线程占用的cpu时间片时间长度一样
平均分配,一切平等
有一些编程语言,线程调度模型采用的是这种方式