线程的实现

14 篇文章 0 订阅

主要有三种方式: 1. 使用内核线程实现(1:1实现) 2. 使用用户线程实现(1:N实现)3. 使用用户线程加轻量级进程混合实现(N:M实现)

  1. 内核线程实现
    内核线程就是直接由操作系统内核(下称内核)支持的线程由内核来完成线程切换 内核通过操纵调度器对线程进行调度 并负责将现成的任务映射到各个处理器上
    程序一般不会直接使用内核线程 而是使用内核线程的一种高级接口——轻量级进程 (通俗意义上说的线程) 由于每个轻量级进程都是由一个内核线程支持 因此只有先支持内核线程 才能有轻量级进程 这种轻量级进程与内核线程之间1:1关系称为一对一的线程模型

  2. 用户线程实现
    广义上来说一个线程只要不是内核线程都可以认为是用户线程的一种(轻量级进程的实现始终建立在内核之上 效率受限制 并不具备用户线程的一些优点)
    优势是不需要系统内核支援 劣势也是没有系统内核的支援 所有的线程操作都需要由用户程序自己处理 java基本不再使用该方式

  3. 混合实现
    将内核线程与用户线程一起使用的实现方式 既存在用户线程也存在轻量级进程 用户线程还是完全建立在用户空间中 轻量级进程作为用户线程和内核线程间的桥梁

java线程的实现

主流的java虚拟机的线程模型采用基于操作系统原生线程模型来实现 即采用1:1的线程模型

java线程调度

指系统为线程分配处理器使用权的过程 调度主要方式分为两种 协同式线程调度与抢占式线程调度
协同式调度的多线程系统 线程的执行时间由线程本身来控制 线程把自己的工作执行完了以后 要主动通知系统换到另一个线程上 最大的好处是实现简单 由于线程是把自己的事做完后才进行线程切换 切换操作对线程自己是可知的
抢占式调度的多线程系统 每个线程由系统来分配执行时间 线程的切换不由本身来决定(java所使用的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值