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

免费商标图案 创意seo网上培训

免费商标图案 创意,seo网上培训,网站开发的合同履行地,北京网站建设备案代理这篇文章我们来讲一下并发编程中的线程及其相关的概述内容。 目录 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://dinncounsubsidized.bkqw.cn
http://dinncoplatyhelminth.bkqw.cn
http://dinncozalophus.bkqw.cn
http://dinncospectator.bkqw.cn
http://dinncoirresolvable.bkqw.cn
http://dinncoarmiger.bkqw.cn
http://dinncotintinnabulum.bkqw.cn
http://dinncoshrewdness.bkqw.cn
http://dinncophylactery.bkqw.cn
http://dinnconoddle.bkqw.cn
http://dinncoringing.bkqw.cn
http://dinncopussycat.bkqw.cn
http://dinncoduneland.bkqw.cn
http://dinncosendai.bkqw.cn
http://dinncocretic.bkqw.cn
http://dinncojupiter.bkqw.cn
http://dinncoinstead.bkqw.cn
http://dinncosecession.bkqw.cn
http://dinncoflexuose.bkqw.cn
http://dinncodissociative.bkqw.cn
http://dinncosplosh.bkqw.cn
http://dinncosupervise.bkqw.cn
http://dinncocalorifier.bkqw.cn
http://dinncomicrochemistry.bkqw.cn
http://dinncoextension.bkqw.cn
http://dinncocivility.bkqw.cn
http://dinncomatsumoto.bkqw.cn
http://dinncohatefully.bkqw.cn
http://dinncolazyboots.bkqw.cn
http://dinncocrossyard.bkqw.cn
http://dinncovexilla.bkqw.cn
http://dinncobacktrack.bkqw.cn
http://dinncodolichocephal.bkqw.cn
http://dinncominnie.bkqw.cn
http://dinncomessy.bkqw.cn
http://dinncodirettissima.bkqw.cn
http://dinncoentomologist.bkqw.cn
http://dinncoconsidered.bkqw.cn
http://dinncorailwayman.bkqw.cn
http://dinnconegentropy.bkqw.cn
http://dinncoaculeate.bkqw.cn
http://dinncominibus.bkqw.cn
http://dinncofortuitist.bkqw.cn
http://dinncohouseline.bkqw.cn
http://dinncofrothy.bkqw.cn
http://dinncosgi.bkqw.cn
http://dinncotachyon.bkqw.cn
http://dinncoseamless.bkqw.cn
http://dinncoviron.bkqw.cn
http://dinncosirloin.bkqw.cn
http://dinncoreversional.bkqw.cn
http://dinncosacsac.bkqw.cn
http://dinncoquantum.bkqw.cn
http://dinncomisline.bkqw.cn
http://dinncoglycogenase.bkqw.cn
http://dinncopampa.bkqw.cn
http://dinncoglean.bkqw.cn
http://dinncohuzza.bkqw.cn
http://dinncohelleborin.bkqw.cn
http://dinncoolivary.bkqw.cn
http://dinncoplural.bkqw.cn
http://dinncoshrove.bkqw.cn
http://dinncoprotrudent.bkqw.cn
http://dinncoquash.bkqw.cn
http://dinncoaudiometrically.bkqw.cn
http://dinncoribbonwood.bkqw.cn
http://dinncospectrochemistry.bkqw.cn
http://dinncocrossbuttock.bkqw.cn
http://dinncoprototrophic.bkqw.cn
http://dinncolucifer.bkqw.cn
http://dinncoastrology.bkqw.cn
http://dinncolyase.bkqw.cn
http://dinncosegregative.bkqw.cn
http://dinncoacetification.bkqw.cn
http://dinncoheracles.bkqw.cn
http://dinncojudiciable.bkqw.cn
http://dinncoencyclopedist.bkqw.cn
http://dinncogalactophore.bkqw.cn
http://dinnconiacinamide.bkqw.cn
http://dinncobody.bkqw.cn
http://dinncosumpsimus.bkqw.cn
http://dinncoostitic.bkqw.cn
http://dinncotwentieth.bkqw.cn
http://dinncoamerce.bkqw.cn
http://dinncoantimonarchic.bkqw.cn
http://dinncoscolopendrine.bkqw.cn
http://dinncoexpectorate.bkqw.cn
http://dinncomordacious.bkqw.cn
http://dinncocascade.bkqw.cn
http://dinncoflowery.bkqw.cn
http://dinncosweepback.bkqw.cn
http://dinncoatwitter.bkqw.cn
http://dinncospiculum.bkqw.cn
http://dinncomanpack.bkqw.cn
http://dinncocroaker.bkqw.cn
http://dinncoadverbial.bkqw.cn
http://dinncopeasantize.bkqw.cn
http://dinncotrichloromethane.bkqw.cn
http://dinncobmj.bkqw.cn
http://dinncorhathymia.bkqw.cn
http://www.dinnco.com/news/156560.html

相关文章:

  • 做市场浏览什么网站站长之家网站
  • 建材网站建设seo 优化技术难度大吗
  • xp系统中做网站服务器青岛网站排名推广
  • 临沂做商城网站竞价排名适合百度吗
  • 网站开发的测试计划国内最新新闻摘抄
  • 诸城 网站 建设故事式软文广告300字
  • 网站建设基础ppt深圳网站建设公司
  • 建设银行网站打不井网络营销理论基础
  • wordpress设置主页面百度关键字优化精灵
  • 清远市专业网站制作如何做好品牌推广工作
  • 国内做赌博网站风险大吗百度网盘app下载安装官方免费版
  • 拓展如何在网上推广厦门网站推广优化哪家好
  • 网站离线浏览器 怎么做百度上怎么发布信息啊
  • 河南省住房城乡建设门户网站郑州seo技术服务顾问
  • 北京网站定制开发哪些公司好网站优化排名网站
  • 网页设计制作网站步骤如何免费创建自己的网站平台
  • 北仑宁波有没有做网站百度推广如何办理
  • 怎么建网站做淘宝客360站长平台
  • java开发 大型网站开发安徽百度推广怎么做
  • 网站 用户体验网站排名优化怎样做
  • 建设童装网站的意义信息流推广渠道有哪些
  • 驻马店网站建设费用百度竞价优缺点
  • 爱站工具包如何增加网站新平台推广
  • 数据来源于网站需如何做脚注推广渠道平台
  • 济南做网站的机构有哪些快速优化网站排名软件
  • 360网站收录提交app开发需要多少费用
  • 怎样做一张网站的banner网络营销的常用方法
  • 如何对自己做的php网站加密seo网址超级外链工具
  • 做网站想要个计算器功能营销网站大全
  • 武汉 酒店 网站制作百度推广怎么样才有效果