304/305线程的概念和调度

线程的概念

线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。

一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程

线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)

 

 线程的调度

分时调度

  所有线程轮流使用CPU 的使用权,平均分配每个线程占用CPU 的时间。

抢占式调度
  优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。

Java线程调度的实现

    Java采用抢占式调度的方式实现内部的线程调度,Java会为每个线程都按照优先级高低分配不同的CPU时间片,且优先级高的线程优先执行。
    优先级低的线程只是获取CPU时间片的优先级被降低,但不会永久分配不到CPU时间片。Java的线程调度在保障效率的前提下尽可能保障线程调度的公平性。

线程让出 CPU 的情况

    当前运行的线程主动放弃CPU,例如运行中的线程调用yield()放弃CPU的使用权。
    当前运行的线程进入阻塞状态,例如调用文件读取I/O操作、锁等待、Socket等待。
    当前线程运行结束,即运行完run()里面的任务。

 

posted @ 2022-07-07 20:45  ja不会va  阅读(41)  评论(0)    收藏  举报