Java 线程调度

线程调度

1.1、常见的线程调度模型有哪些?

  抢占式调度模型:
  那个线程的优先级比较高,抢到的CPU时间片的概率就高一些/多一些。
  java采用的就是抢占式调度模型。

  均分式调度模型:
    平均分配CPU时间片。每个线程占有的CPU时间片时间长度一样。
    平均分配,一切平等。
    有一些编程语言,线程调度模型采用的是这种方式。

1.2、java中提供了哪些方法是和线程调度有关系的呢?

  实例方法:
    void setPriority(int newPriority) 设置线程的优先级
    int getPriority() 获取线程优先级
    最低优先级1
    默认优先级是5
    最高优先级10
    优先级比较高的获取CPU时间片可能会多一些。(但也不完全是,大概率是多的。)

  静态方法:
    static void yield() 让位方法
    暂停当前正在执行的线程对象,并执行其他线程
    yield()方法不是阻塞方法。让当前线程让位,让给其它线程使用。
    yield()方法的执行会让当前线程从“运行状态”回到“就绪状态”。
    注意:在回到就绪之后,有可能还会再次抢到。

  实例方法:
    void join()
    合并线程
    class MyThread1 extends Thread {
      public void doSome(){
        MyThread2 t = new MyThread2();
        t.join(); // 当前线程进入阻塞,t线程执行,直到t线程结束。当前线程才可以继续。
      }
    }

    class MyThread2 extends Thread{

    }

posted @ 2020-09-20 13:19  一叶扁舟,乘风破浪  阅读(242)  评论(0编辑  收藏  举报