当前位置: 首页 > news >正文

Android中开一个线程是ULT还是KLT

我们分几个层次来讲清楚 ULT (User-Level Thread) 和 KLT (Kernel-Level Thread),再结合到 Android 线程模型


1. ULT(用户级线程,User-Level Thread)

  • 调度位置:由用户态的线程库(runtime 或应用自己实现的库)管理,内核只看到一个进程。

  • 特点

    • 创建/销毁/切换速度快,因为不用陷入内核。

    • 用户空间可以做自己的调度策略。

    • 但 阻塞问题严重:如果某个 ULT 调用了阻塞系统调用,整个进程都会阻塞,因为内核不知道有多个 ULT。

  • 典型实现:早期的 Java 绿色线程、协程(coroutine)、Go 的 goroutine、Python 的 greenlet。


2. KLT(内核级线程,Kernel-Level Thread)

  • 调度位置:由操作系统内核调度,内核知道每个线程的存在。

  • 特点

    • 每个线程都是调度实体,可以运行在多核 CPU 上。

    • 如果一个线程阻塞,其他线程不受影响。

    • 上下文切换比 ULT 慢,因为要陷入内核。

  • 典型实现:Linux pthread,Windows Thread。


3. Android 中的线程

Android 的底层是 Linux 内核,所以它的线程其实就是 KLT

  • java.lang.Thread → 最终会调用到 JNI 层 → 对应 pthread_create

  • pthread_create 在 Linux 内核里通过 clone() 系统调用创建线程。

  • 所以 Android 应用里你 new Thread().start() 出来的线程,是 KLT,内核可以直接调度。


4. 为什么很多资料会混淆?

  • 因为在一些语言/框架中(比如 Java 早期的绿色线程、Go 协程),应用级别提供了 ULT 抽象,但 Android 上的 Java 线程已经是 KLT 封装

  • Android 上的 协程(Kotlin Coroutine) 属于 ULT —— 它本质上运行在少量 KLT 上(线程池),调度逻辑在用户空间完成。


结论

  • 在 Android 中开一个 Thread → 是 KLT

  • 在 Android/Kotlin 中开一个协程 → 是 ULT(用户级调度),运行在少量 KLT 上

http://www.dtcms.com/a/403841.html

相关文章:

  • 动态IP的适用业务场景
  • 可以不使用备案的网站名吗网页制作网站知识
  • 怎么在百度搜索自己的网站做网站 分工
  • 符合系统国产化从mysql数据库迁移到达梦数据库需要注意的点有哪些?
  • 个人网站代码模板帝国cms网站建设
  • QML学习笔记(十二)QML的自定义组件
  • 做品牌网站找谁php网站开发视频网站
  • TESLAGLOVE为虚拟现实训练提供真实触觉反馈
  • 无锡微网站制作注册网站多久
  • HarmonyOS 5 高级动效实战:粒子系统、路径动画与物理动效开发
  • HarmonyOS 6 值得关注的核心新特性
  • FPGA实现双目摄像头红蓝3D融合,提供6套工程源码和技术支持
  • 仙游网站建设有没有好网站推荐
  • 网站如何备案 流程wordpress对接微信
  • Linux中修改主机名并立即生效的完整指南
  • Python常见的排序算法及其特点和实现代码
  • 网站备案号官网深圳全胜专业网站建设
  • ospf 区域内的防环/特殊区域/静默接口/ 认证/前缀列表/ 多进程
  • 鸿蒙NEXT UI Design Kit:打造高端精致界面的新利器
  • 手机网站被自动跳转网易企业邮箱收费版
  • 幽冥大陆(七)安诺克酒店智能门锁SDKV3 VBDemo—东方仙盟
  • 一个主机一个域名做网站商城网站建设运营方案
  • 鸿蒙NEXT应用权限申请全攻略:从配置到授权实战
  • wordpress 文章的形式简述搜索引擎优化的方法
  • 有哪些网站可以做ps挣钱网做网站
  • 个人信息网站建设的心得体会长椿街网站建设
  • MacOS报错“zsh: command not found: brew”【已解决】
  • 网站设计策划书模板wordpress程序上传
  • flash attention利用GPU众核加速注意力计算
  • 晶泰科技与百诚医药签订合作意向书,共同推进AI新药研发合作