| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 提起线程,你不了解的那些事 -> 正文阅读 |
|
[Java知识库]提起线程,你不了解的那些事 |
??对 MESI 缓存一致性协议,有了初步的了解后,本文来介绍偏内容性的一个话题: 线程 。 Java 开发者对多线程一定不会陌生,那么线程到底是啥?Java 又是如何利用多线程来调度/使用 CPU 来完成操作的呢。
1.什么是线程?? ??每个线程都有一个 ?? 线程又分为两种:
1.用户级线程?? ??我们常说的线程,指的就是用户级线程。 线程模型 ??一个线程阻塞将使得整个进程(包括它的所有线程)阻塞?这个说法也是不全面的,回答这个问题,就需要简单了解一下
1.多对一用户级线程模型
2.一对一内核级线程模型
3.多对多两级线程模型
目前(linux)基本上都采用一对一模型 总结
2.内核级线程?? 3.系统空间??系统空间,分为 ??我们日常安装的 exe ,都属于进程,它是没有资格操作底层的内核空间的。 ??比如现在我们通过 new Thread 的方式创建一个线程,运行在 JVM 上,这属于一个用户级线程。此时就需要 JVM 进程去调用内核空间提供交互接口,对CPU底层进行操作。 ??在 CPU 中,以 Intel x86为例,x86处理器是通过 ??用户级线程调度 CPU 资源过程,如图所示: 2.Java 线程与内核线程的关系??Java 线程和内核线程,是1:1的映射关系。 ??此处以 Linux 服务器为例,我们通过 new Thread() 创建的用户线程,然后调用 Linux为我们提供的工具类库( 3.Java为什么用并发?? ?? 并发优点:
并发产生的问题:
1.什么是线程上下文切换??线程在运行过程中,所有的运行信息都是保存在 ?? ??线程 t2 执行完后,线程 t1 此时获得了CPU使用权, 这就叫做线程上下文切换。 2.死锁检测方法??可通过 4.Java线程生命周期状态?文末为大家附上 Java 线程的六大状态,以及状态之间如何进行切换
更多生命周期状态内容,可以参考以下两篇文章: 参考文章: ??2021-11-16,《提起线程,你不了解的那些事》已更新,接下来涉及到的 JMM 内存模型、MESI 协议在 JMM 内存模型中的8种交互操作等内容,如有需要,请持续关注《并发编程》板块!!! 2021-11-19 已更新《并发编程》第四篇:JMM内存模型 & 多线程三大特性 博主写作不易,加个关注呗 求关注、求点赞,加个关注不迷路 ヾ(?°?°?)ノ゙ 我不能保证所写的内容都正确,但是可以保证不复制、不粘贴。保证每一句话、每一行代码都是亲手敲过的,错误也请指出,望轻喷 Thanks?(・ω・)ノ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:38:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |