多线程之所以能够实现,第一是硬件的功劳,也就是CPU。现代的CPU有一个很重要的特性,就是时间片。每一段获得CPU的代码只能运行一个时间片规定的时间,例如10ms。到时间之后CPU就会把正在运行的代码暂停,然后发生一个中断。这个中断是系统级的事件,只有操作系统能够接手,这样控制权就落到了操作系统手里。

接下来就是操作系统的事情了。线程对操作系统来说就是一段代码+运行时数据(主要是寄存器数据,还有线程中与资源相关的数据,比如打开的文件等)。操作系统会为每个线程保存相关的这些数据,当接收到来自CPU的时间片中断事件时,就会按一定规则从这些线程中选择一个,恢复它的运行时数据,这样CPU就可以继续执行这个线程了。

选择一个合适的线程的过程称为线程调度,最简单的规则是FCFS,也就是按排队的时间先后顺序调度,谁先来排队,下一个就让谁运行。另外还有按优先级、按任务大小等调度策略,以及多种策略的组合等方式。详细的可以去了解一下操作系统的原理。

Java中线程实现主要依赖于操作系统,其本身不进行线程管理。它只是把线程相关的操作进行了封装和抽象,以方便我们使用。例如,Java中的线程可以设置优先级,但如果操作系统本身不支持优先级调度策略,那么为线程设置优先级是没有任何作用的。

《推荐阅读》

239月

2018年网络开发者应该关注什么?

229月

什么是MVVM?

多线程的底层原理是怎么样的?相关推荐

  1. java虚拟机线程调优与底层原理分析_Java并发编程——多线程的底层原理

    " Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和 CPU的 ...

  2. 面试突然问Java多线程底层原理,我哭了!

    兄弟们,不要踩坑啊,我原本打算在金九银十之前换份工作,结果出去第一面就被干懵了! 面试官上来就问我了解不了解多线程,我感觉我还可以,我就和他说:必须的! 不过,他直接问了多线程的底层原理,这我都是一知 ...

  3. 并发之volatile底层原理

    15.深入分析Volatile的实现原理 14.java多线程编程底层原理剖析以及volatile原理 13.Java中Volatile底层原理与应用 12.Java多线程-java.util.con ...

  4. 【多线程学习笔记】sychronized关键字底层原理、sychronized与ReentrantLock、volatile和synchronized

    文章目录 sychronized释义 synchronized关键字最主要的三种使用方式: synchronized底层原理: 同步代码块: 同步方法 当前类的class对象作为锁 锁升级 Synch ...

  5. 视频教程-iOS底层原理班(下)/OC对象/关联对象/多线程/内存管理/性能优化-iOS

    iOS底层原理班(下)/OC对象/关联对象/多线程/内存管理/性能优化 小码哥教育CEO,曾开发了2个iOS的流行开源框架(MJRefresh.MJExtension),目前在国内的使用率非常高. 李 ...

  6. iOS底层原理班(下)/OC对象/关联对象/多线程/内存管理/性能优化-李明杰-专题视频课程...

    iOS底层原理班(下)/OC对象/关联对象/多线程/内存管理/性能优化-236人已学习 课程介绍         得遇名师,突飞猛进!iOS培训王者MJ(李明杰)老师精心研发,iOS进阶课程,实用技术 ...

  7. 嘿嘿,我就知道面试官接下来要问我 ConcurrentHashMap 底层原理了,看我怎么秀他...

    来自:烟雨星空 前言 上篇文章介绍了 HashMap 源码后,在博客平台广受好评,让本来己经不打算更新这个系列的我,仿佛被打了一顿鸡血.真的,被读者认可的感觉,就是这么奇妙. 原文:面试官再问你 Ha ...

  8. 面试官再问你 HashMap 底层原理,就把这篇文章甩给他看

    来自:烟雨星空 前言 HashMap 源码和底层原理在现在面试中是必问的.因此,我们非常有必要搞清楚它的底层实现和思想,才能在面试中对答如流,跟面试官大战三百回合.文章较长,介绍了很多原理性的问题,希 ...

  9. hashmap原理_HashMap和HashTable底层原理以及区别

    HashMap底层原理 哈希表:在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为O(1). 数据结构的物理存储结构只有两种:顺序存储结构和 ...

最新文章

  1. SpringBoot+SpringSecurity前后端分离+Jwt的权限认证(改造记录)
  2. GitHub上大热的Deep Photo终于有TensorFlow版了!
  3. KVM — 安装部署
  4. 每日一皮:为什么在生产环境操作要谨慎再谨慎?太形象了!
  5. eclipse的操作
  6. 清理谷歌浏览器注册表_将谷歌浏览器的注册表彻底删除的方法
  7. 螺旋分级机与水力分级机间的优缺点
  8. win7,win10 显示文件扩展名
  9. sharepoint文档库文件下载
  10. 网页版红警的资源加载的实现
  11. 外贸企业邮箱是什么?大连邮箱,邮件归档系统
  12. canvas示例样式_使用js canvas和atari vcs trivia制作基本html游戏的快速示例
  13. 【文献阅读】医学图像分割中的loss函数选择-Loss odyssey in medical image segmentation loss
  14. Linux安装dos2unix的方法—绝对完全有用
  15. UDS诊断ISO-14229分析总结
  16. 【机器人学】基于PoE模型的串联机械臂UR5的正运动学、微分运动学和逆运动学
  17. 数据科学包_Fourth_Chapter
  18. vbs 对excel的操作 删除、修改单元格,设置字体、背景色 .
  19. presto sql语法总结
  20. 在Ranger policies中Deny-conditions 和excludes介绍

热门文章

  1. 技术沙龙 | 深度赋能AI全场景,揭秘你不知道的移动云
  2. GitHub 一周热点:听说程序员都是颜控?
  3. 百度否认退市;微信官方回应「个人影响度报告」;微软公布 C# 9.0 计划 | 极客头条...
  4. 零基础物联网开发,踩坑无数,得到这份宝典 | 原力计划
  5. 《原力计划【第二季】》第 3 周周榜揭晓!!!
  6. 20 道必看的 Vue 面试题 | 原力计划
  7. 漫画:如何优化 “字符串匹配算法”?
  8. 上海正在夺回互联网 “失落的十年”
  9. 12306 出招抢票软件,技术黄牛生意要“黄”?
  10. 想学新的编程语言?考虑下 Go 吧!