Java 线程

  • 线程
    线程是CPU调度的基本单位,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源,又可以独立调度

  • 实现线程的3种方式
  1. 使用内核线程实现:直接由操作系统内核支持的线程,由内核来完成线程切换,由内核通过操纵调度器对线程进行调度,并负责将线程的任务映射到各个处理器上
  2. 使用用户线程实现:建立在用户空间的线程库上,系统内核不能感知线程存在的实现
  3. 使用用户线程加轻量级进程混合:将内核进程和用户线程一起使用的实现方式

  • Java 线程调度

系统为线程分配处理器使用权的过程

  1. 协同式线程调度:线程的执行时间由线程本身来控制,线程把自己的工作执行完了之后,要主动通知系统切换到另一个线程上
    好处:实现简单,由于线程把自己的事情干完后才会进行线程切换,切换操作对线程自己是可知的
    坏处:线程执行时间不可控制,如果一个线程编写有问题,一直不告诉系统进行线程切换,程序就会一直阻塞在那里
  2. 抢占式线程调度
    每个线程将由系统来分配执行时间,线程的切换不由线程本身来决定。
    好处:线程的执行时间是系统可控的,不会一个线程导致整个线程阻塞的问题

  • 线程状态转换


    Java 线程_第1张图片

你可能感兴趣的:(Java 线程)