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

吉林省软环境建设办公室网站网站维护方案怎么做

吉林省软环境建设办公室网站,网站维护方案怎么做,没干过网络推广能干吗,上海网站空间租用这篇文章我们来讲一下并发编程中的线程及其相关的概述内容。 目录 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.上下文…

这篇文章我们来讲一下并发编程中的线程及其相关的概述内容。

目录

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

要学习并发编程,首先我们应该清楚什么是并发编程

JUC:JUC是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—定程度上可以减少上下文切换。

总结

  1. (单核CPU)同一时间,cpu只能处理1个线程,只有1个线程在执行
  2. 多线程同时执行:是CPU快速的在多个线程之间的切换
  3. cpu调度线程的时间足够快,就造成了多线程的“同时”执行
  4. 如果线程数非常多,cpu会在n个线程之间切换,消耗大量的cpu资源
  5. 每个线程被调度的次数会降低,线程的执行效率降低

建议
合理设置线程数目既可以最大化利用CPU,又可以减少线程切换的开销。

  • 高并发,低耗时的情况,建议少线程。
  • 低并发,高耗时的情况:建议多线程。
  • 高并发高耗时,要分析任务类型、增加排队、加大线程数

6.总结

这篇文章我们讲了线程,进程,协程,也讲了并发,并行,串行。介绍了JUC,上下文切换,时间片等相关概念,都是很基础很简单的内容,这是后面学习并发编程的基础,要熟练



 

http://www.yayakq.cn/news/651839/

相关文章:

  • 青岛市医疗保险网站房山营销型网站建设
  • 长春模板建站代理做网站如何收益
  • 网站建设难点和重点中国外协加工网最新加工订单
  • 网站建设外包公司排名那种做任务的网站叫什么
  • 办公空间设计课程总结seo杭州
  • 编辑网站教程旅游公司网站建设方案
  • 六安网站优化2021没封的网站有人分享吗
  • 怎么制作网站logo工信部网站备案号
  • 营销型网站推广方案wordpress自动设置缩略图
  • 河南网站搭建手机建立网站
  • 大连本地网站推广ios开发课程
  • 阿里云网站搭建网站防止采集
  • 高安高端网站设计公司什么是网络营销的综合工具
  • 广州做网站哪个平台好wordpress特效
  • 购物网站的功能企业的管理系统有哪些
  • 网站做成app的软件wordpress5.0中文编辑器
  • 湖南手机网站建设公司公众号5000粉丝月收入
  • 书画网站的建设目标用ftp上传wordpress后
  • 电商网站的功能网上找兼职的网站
  • 网站建设文化怎么样重庆网站备案必须到核验点
  • 众筹网站怎么做推广硬件开发工程师面试
  • 青岛联通网站备案河南中建卓越建设管理有限公司网站
  • 做软件下载网站做网站的多少钱
  • 中文域名可以做网站吗做网站要怎么备案
  • 赤峰企业网站建设如何进入公众号
  • 简洁中文网站模板做网站公司哪家
  • 自己做的网站点击赚钱产品设计专业
  • 为了做宣传网站而注册公司公司运营团队架构
  • jsp手机版网站开发如何建立自己手机网站
  • 门户网站的注意要素安卓下载app