推广网站赚钱网络规划设计师资料网盘下载
- 作者: 五速梦信息网
- 时间: 2026年04月20日 08:19
当前位置: 首页 > news >正文
推广网站赚钱,网络规划设计师资料网盘下载,高权重网站怎么做,石林网站建设这篇文章我们来讲一下并发编程中的线程及其相关的概述内容。 目录 1.J.U.C 2.进程、线程、协程 2.1进程 2.2线程 2.3纤程#xff08;协程#xff09; 2.4概念小结 3.并发、并行、串行 3.1并发 3.2并行 3.3串行 3.4概念小结 4.CPU核心数和线程数的关系 5.上下文…这篇文章我们来讲一下并发编程中的线程及其相关的概述内容。 目录 1.J.U.C 2.进程、线程、协程 2.1进程 2.2线程 2.3纤程协程 2.4概念小结 3.并发、并行、串行 3.1并发 3.2并行 3.3串行 3.4概念小结 4.CPU核心数和线程数的关系 5.上下文切换 6.总结 1.J.U.C 要学习并发编程首先我们应该清楚什么是并发编程 JUCJUC是java.util.concurrent包的缩写包的结构如下所示说白了就是并发场景进行多线程编程的工具类 我的总结JUC就是在并发场景下怎么让程序尽量通过有限的硬件高效的处理请求并且保证程序“线程安全”其中涉及到的内容非常多。 学习并发编程说白了就是学怎么样使用线程怎么在多线程的情况下保证线程安全。就这两点。 2.进程、线程、协程 下面来讲一下并发编程的前置内容进程、线程、协程 2.1进程 什么是进程 专业的说法在操作系统中进程是基本的资源分配单位操作系统通过进程来管理计算机的资源如CPU、内存、磁盘等。每个进程都有一个唯一的进程标识符PID)用于区分不同的进程。 通俗说法可看做是正在执行的程序。如QQ.exe 解释当我们的一个程序没有执行的时候它在磁盘中就是一个死的文件。当我们执行它的时候操作系统就会为它创建一个进程然后给其分配CPU的资源比如内存磁盘资源等。一个进程就会占用我们计算机的一个资源。 拓宽我们常常会遇见CPU占用过高的情况这个时候我们就会打开任务管理器去看一看是哪一个进程占用过高了如果该进程没用的话我们就可以手动的去结束该进程释放被占用的CPU资源了。 2.2线程 什么是线程 底层角度线程是操作系统中的基本执行单元(能够直接执行的最小代码块)它是进程中的一个实体是CPU调度和分派的基本单位。一个进程可以包含多个线程每个线程都可以独立执行不同的任务但它们共享进程的资源。 同一时刻一个CPU核心只能运行一个线程也就是CPU内核和同时运行的线程数是1:1的关系也就是说8核CPU同时可以执行8个线程的代码。通俗角度通俗地说线程可以理解为一个饭店的饭桌每个饭桌可以点不同的菜但是都可以共享饭店服务员、厨师饭桌的多少决定客户的处理效率。 这张图可以很好的解释一下。 2.3纤程协程 底层角度: 1.纤程可以在一个线程内部创建多个纤程这些纤程之间可以共享同一个线程的资源 2.纤程是在同一个进程内部运行的不需要操作系统的介入可以在用户空间java的就是JVM内实现协作式多任务处理。因此纤程的创建和销毁开销很小可以更高效地利用系统资源。 通俗角度: 通俗地说如果线程是饭店的饭桌协程就是座椅。 注意Java19才支持虚拟线程纤程)或者使用第三方协程库quasar(据说这个大神已经入职oracle了并且正是java的虚拟线程的开发者。) 2.4概念小结 1先有进程然后进程可以创建线程线程是依附在进程里面的线程里面可以包含多个协程 2进程之间不共享全局变量线程之间共享全局变量但是要注意资源竞争的问题 3.并发、并行、串行 下面我们来讲一下并发、并行和串行的概念 3.1并发 通俗并发是多个客户在同一时间段内不约而同来到饭店但是都想快点上菜却只有一个厨师厨师想了个办法给每一桌上一个菜然再轮流炒第2、3…个菜达到雨露均沾不至于后面来的客户闹情绪。底层在操作系统中安装了多个程序并发的是同一时间段内宏观上有多个程序同时运行这在单CPU系统中每一时刻只能有一道程序执行即微观上这些程序是分时的交替运行只不过是给人的感觉是同时运行那是因为分时交替运行的时间是非常短的。 3.2并行 通俗并行是多个客户在同一时刻一起来到饭店没人愿意排队好办饭店有多个厨师 每桌安排一个厨师。底层在多核CPU系统中这些同一时刻的程序可以分配到多个处理器上(CPU)实现多任务并行执行即利用每个处理器来处理一个可以并发执行的程序这样多个程序便可以同时执行。目前电脑市场上说的多核CPU便是多核处理器核越多并行处理的程序越多能大大的提高电脑运行的效率。 3.3串行 通俗串行就很好理解了按照客户下单顺序先到先得厨师按菜单顺序炒菜。但是后面的客户就要等得比较久了如果第一个客户吃的是满汉全席后面的客户可能就不想等了。底层如单核CPU同一时刻只能运行一个程序如果存在多个程序需要按照先后顺序执行。我打开qq后不能再同时打开微信只能等qq执行完成(关闭)后才能打开微信线程的串行亦是如此一次只能执行一个线程代码指令其他线程需要排队等待。 3.4概念小结 并发一般是针对线程级别的指多个线程在点个CPU核心上交替执行。并行可以说线程也可以说进程。指同一时刻多个线程在多个CPU核心上执行。串行就是多个线程按顺序在单个CPU核心上执行。 综合来说并发Concurrent指应用能够交替执行不同的任务比如单CPU核心下执行多线程并非是同时执行多个任务如果你开两个线程执行就是在你几乎不可能察觉到的速度不断去切换这两个任务已达到同时执行效果其实并不是的只是计算机的速度太快我们无法察觉到而已。并行Parallel指应用能够同时执行不同的任务例吃饭的时候可以边吃饭边打电话这两件事情可以问时执行两者区别一个是交替执行,一个是同时执行。 4.CPU核心数和线程数的关系 前面说过目前主流CPU都是多核的线程是CPU调度的最小单位。同一时刻一个CPU核心只能运行一个线程也就是CPU内核和同时运行的线程数是1:1的关系也就是说8核CPU同时可以执行8个线程的代码。但Intel引入超线程技术后产生了逻辑处理器的概念使核心数与线程数形成1:2的关系。在我们前面的Windows任务管理器贴图就能看出来内核数是6而逻辑处理器数是12。 在Java中提供了Runtime.getRuntime().availableProcessors()可以让我们获取当前的CPU核心数注意这个核心数指的是逻辑处理器数。 获得当前的CPU核心数在并发编程中很重要并发编程下的性能优化往往和CPU核心数密切相关。 5.上下文切换 由于现在大多计算机都是多核CPU多线程往往会比单线程更快更能够提高并发但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁你的程序反而不能支持更高的TPS。时间片 多任务系统往往需要同时执行多道作业。作业数往往大于机器的CPU数然而一颗CPU同时只能执行一项任务如何让用户感觉这些任务正在同时进行呢操作系统的设计者巧妙地利用了时间片轮转的方式 时间片是CPU分配给各个任务线程的时间 线程上下文是指某一时间点CPU寄存器和程序计数器的内容CPU通过时间片分配算法来循环执行任务线程)因为时间片非常短所以CPU通过不停地切换线程执行。换言之单CPU这么频繁多核PU—定程度上可以减少上下文切换。 总结 (单核CPU)同一时间cpu只能处理1个线程只有1个线程在执行多线程同时执行是CPU快速的在多个线程之间的切换cpu调度线程的时间足够快就造成了多线程的“同时”执行如果线程数非常多cpu会在n个线程之间切换消耗大量的cpu资源每个线程被调度的次数会降低线程的执行效率降低 建议 合理设置线程数目既可以最大化利用CPU又可以减少线程切换的开销。 高并发低耗时的情况建议少线程。低并发高耗时的情况:建议多线程。高并发高耗时要分析任务类型、增加排队、加大线程数 6.总结 这篇文章我们讲了线程进程协程也讲了并发并行串行。介绍了JUC上下文切换时间片等相关概念都是很基础很简单的内容这是后面学习并发编程的基础要熟练
- 上一篇: 推广网站怎么做莱芜网站建设及优化
- 下一篇: 推广业务网站建设wordpress产品参数
相关文章
-
推广网站怎么做莱芜网站建设及优化
推广网站怎么做莱芜网站建设及优化
- 技术栈
- 2026年04月20日
-
推广网站怎么建wordpress百度商桥
推广网站怎么建wordpress百度商桥
- 技术栈
- 2026年04月20日
-
推广网站有效的免费方法郑州seo规则
推广网站有效的免费方法郑州seo规则
- 技术栈
- 2026年04月20日
-
推广业务网站建设wordpress产品参数
推广业务网站建设wordpress产品参数
- 技术栈
- 2026年04月20日
-
推广一般给多少钱百度搜索结果优化
推广一般给多少钱百度搜索结果优化
- 技术栈
- 2026年04月20日
-
推广引流图片惠州seo报价
推广引流图片惠州seo报价
- 技术栈
- 2026年04月20日
