城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

线程是什么(Java中的线程)

6月2日 托天庙投稿
  在我们开始谈线程之前,不得不提下进程。
  无论进程还是线程都是很抽象的概念,有一个关于进程和线程很形象的比喻能帮我们更好的理解。
  进程就像个房子,房子是一个包含了特定属性的容器,例如空间大小、卧室数量等。如果你也这样看的话,那么房子自己不会主动做任何事情,它是被动的对象。而线程则像是房中的居住者,它是主动的对象居住者要使用不同的房间、看电视、煮饭、洗澡等等。房子占据着一块真实的土地,正像进程占据着内存。而房子的居住者可以自由出入所有的房间,而进程中的线程也是类似的,可以自由访问任何进程占据的内存。
  按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。通过上面的比喻,我们可以更容易的理解进程和线程的关系。进程只是一个容器对象,它负责占据资源(内存地址、文件IO),而线程共享进程的资源,作为CPU调度的基本单位可以被独立调度。
  线程实现
  回到我们的题目:java线程。java作为一个跨平台的语言,自然要提供一个跨平台的线程实现。线程按类型可以分为内核线程(KernelLevelThread)和用户线程(UserThread),分类的标准主要是线程的调度者在核内还是在核外。早期时,一些操作系统因为没有提供线程的原生实现,所以早在JDK1。2之前,java是基于用户线程来实现的。用户线程是相对内核线程而言,内核线程自然是由操作系统内核支持的线程,由内核来管理和调度。后来主流操作系统都支持了线程,因此现在java都采用原生线程来实现了。
  既然现在的java线程都采用原生系统线程来实现,那么是否每个java线程就对应一个系统内核线程?对sunjdk而言,在Windows和Linux中都是采用的一对一模型,Linux提供一种称为轻量级进程(LWP)的高级抽象来避免应用直接使用内核线程。而在像Solaris这样的系统中则不一定了,因为它支持多对多模型。不过对于底层系统的线程模型到底如何,对java线程而言都是被屏蔽了的,jvm层面提供了一个统一的抽象线程模型。下图展示了在Linux上java线程实现的模型图
  线程数量
  曾经碰到一个问题,java程序运行中抛出一个OOM错误如下:
  java。lang。OutOfMemoryError:unabletocreatenewnativethread
  这个问题的原因可能有两种,一种是内存真的不足了,自然无法再创建线程。另外一种其实是来自操作系统的限制,比如在Linux中,java线程会映射为轻量级进程,那么创建线程的数量自然会受到系统进程数量等资源约束的限制。
  对于一个java进程到底能创建多少线程呢,一般我们按经验线程都是在几十到几百之间,顶多1、2k了。这是为什么呢?java有个启动参数Xss1m表明每个线程栈大小为1m,那么对内存一般2G的话,总线程数达到2k感觉上都是不可能的。但实际上做个实验在循环中不断创建新线程,可以不断创建多达几万的线程,这又是为什么?原因是新创建的线程其实仅仅分配了内存地址空间,但并没有实际去占用那1m的栈空间,栈空间是在线程使用时才去实际占用的。所以经验是对的,一般对2G的堆内存空间线程数量根据应用类型在几十到几百之间是合适的。
  线程状态
  java定义了6种线程状态,任一时刻一个线程处于其中一种状态,其状态转换关系如下图:
  1。NEW
  新创建未启动的线程处于该状态
  2。RUNNABLE
  调用了start()方法后,线程进入RUNNABLE状态
  3。WAITING
  不设置timeout的Object。wati()、Thread。join()等方法会让线程进入无限等待,需要等待其他线程显式的唤醒。
  4。TIMEDWAITING
  Thead。sleep()或设置了timeout的Object。wati()、Thread。join()等方法让线程进入限期等待。
  5。BLOCKED
  阻塞状态,线程在等待进入同步区域。
  6。TERMINATED
  线程执行结束,终止状态。
  从上面的状态图可以看出,线程从新建、执行到结束是单向的,期间可能会经历等待和阻塞状态,线程执行结束进入终止状态后将不能再重复使用。任何时候一个CPU核只能执行一个线程,也就是说同时并行运行的线程数与CPU核数相等。在操作系统内核层面,线程只有分配了CPU的执行时间片,才算处于RUNNING状态。而当有大于CPU核数的线程需要执行,没有分配到CPU执行时间片的线程则处于READY状态。RUNNING和READY都是线程在内核的状态,同时映射到java的RUNNABLE状态。RUNNABLE正如其名,表示可运行的状态,并非正在运行的状态。
  线程池
  java编程不可避免的要使用线程,而使用线程更常见的方式是使用线程池。说起池这个东西,我们应该比较熟悉,例如:连接池。其实池就是一个容器,里面有一堆预先创建好的对象,我们就称其为对象池,而当这个对象具体为线程,那就是线程池了。前面讲线程状态说过,线程执行从run()方法退出就会进入终止状态,那么这个线程就消亡了,不能再复用。线程池的概念就是要复用线程,避免创建开销,那么如何复用呢,其实就是要让池中的线程不用从run()方法中退出。所以为了复用线程,池的实现会与一个阻塞队列结合,空闲时线程阻塞在队列上等待任务到来,任务执行结束后再重新阻塞,永远不会退出。
  jdk1。5引入了java。util。concurrent并发包后,我们可以很方便的通过ThreadPoolExecutor来创建线程池
  publicThreadPoolExecutor
  (
  intcorePoolSize,
  intmaximumPoolSize,
  longkeepAliveTime,
  TimeUnitunit,
  BlockingQueue
投诉 评论 转载

吴京拄拐杖独自做核酸,双手卖力支撑青筋直冒,腿受伤开车太费力饿了吗?戳右边关注我们,每天给您送上最新出炉的娱乐硬核大餐!近期,有媒体拍到吴京独自去做核酸的画面,他拄着拐杖在人群中特别显眼。环顾四周,他身边没有家人与助理陪同,走起路……线程是什么(Java中的线程)在我们开始谈线程之前,不得不提下进程。无论进程还是线程都是很抽象的概念,有一个关于进程和线程很形象的比喻能帮我们更好的理解。进程就像个房子,房子是一个包含了特定属性……找人帮查微信聊天记录(如何查看别人微信的聊天记录)找人帮查微信聊天记录(如何查看别人微信的聊天记录)微信现已成为咱们最常用的谈天东西,由于微信的运用率非常高,咱们也常常会拾掇一下微信谈天记载和其他软件的缓存文件来腾出手机……后金元时代,没有外援的中超豪强不堪一击,国脚成为反面典型2022赛季的中超联赛虽然一推再推,但是终于还是开赛了。截止到目前为止,中超首轮战罢八场,总体来说可以总结为:后金元时代,没有外援的中超豪强不堪一击,国脚成为反面典型。揭……宾馆开房记录能随便查么?(如何查询自己去过的酒店)宾馆开房记录能随便查么?(如何查询自己去过的酒店)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,……广汽丰田打响价值战真正的高手是长期主义者2023年以来,国内电动车与燃油车两大阵营一齐打响了价格战,几十个汽车品牌已纷纷参战,开启车市竞争新高度。保价还是保量,众多车企普遍面对这道令人纠结的选择题,有价无量,或者有量……宝可梦有哪些(开局盘点十大最强宝可梦)从小孩到大人,《宝可梦》系列作品受到全世界众多玩家的喜爱。以游戏为首,动画、电影、周边等,平常不玩游戏的人也都有所了解,而系列游戏从第一部至今已经推出了数量相当多的作品,是最有……Steam特惠84史低Titanfall2泰坦陨落284Steam售价:149折后价:25。28(史低)支持繁体中文好评率90【短评】:你可以永远相信BT协议四:投掷铁驭(恼)……到移动公司查微信聊天记录(怎样查看别人的聊天记录)到移动公司查微信聊天记录(怎样查看别人的聊天记录)微信现已成为咱们最常用的谈天东西,因为微信的运用率十分高,咱们也常常会拾掇一下微信谈天记载和其他软件的缓存文件来腾出手机……微信查我加的好友的聊天记录(如何看对方的聊天记录)微信查我加的好友的聊天记录(如何看对方的聊天记录)微信现已成为我们最常用的谈天东西,因为微信的运用率十分高,我们也常常会收拾一下微信谈天记载和其他软件的缓存文件来腾出手机……手机丢了查定位怎么找(电话丢了关机了能定位吗)手机丢了查定位怎么找(电话丢了关机了能定位吗)跟着移动互联网的翻开,手机现已成为咱们作业日子不行切开的一部分。假定手机不幸丢掉,所有人都会很着急,都期望赶快找回来。……帮我查一下手机定位(怎么定位别人的手机所在位置)帮我查一下手机定位(怎么定位别人的手机所在位置)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所……
王一博和程潇真的在谈恋爱吗?弟弟新婚当天,4个姐姐每人给弟媳2万元,大姐明显不情愿理想全新L8内饰曝光理想ONE换代,长联屏变组合屏机关事业单位养老金和职业年金补发,2022年到2028年工资金公孙十年磨一剑,做品牌好酒陈时中支持度突飞猛进?吴子嘉直呼不解民进党都还没出大招气胸常吃这四种粥能带来多大的效果?冬季装修要注意些什么?浮世绘创始人菱川师宣的原版原作首次在国内亮相腾讯QQ音乐新增支持桌面歌词片段播放又矮又胖穿衣却很时尚!没胸没腰却精致有品味!这小个子真会穿!美丽永驻,最重要的事居然是从它开始

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁