教育房产时事环球科技商业
投稿投诉
商业财经
热点动态
科技数码
软件应用
国际环球
晨报科学
新闻时事
信息智能
汽车房产
办公手机
教育体育
生活生物

线程有哪些(线程的概念和特点)

  Java中的多线程编程(超详细总结)
  **一、线程与多线程的概念
  线程,即单线程,是程序的一条执行线索,执行路径,是程序使用cpu的最小单位。线程本身不能运行,它只能运行在程序中,线程是依赖于程序存在的。
  多线程,从字面上理解,就是从多个单线程一起执行多个任务。在Java 编程中,已经给多线程编程提供了内置的支持。多线程是多任务的一种特别的形式,但多线程使用了更小的cpu资源开销。 多线程能满足程序员编写高效率的程序来达到充分利用 CPU 的目的。
  二、线程与进程之间的关系
  进程: 一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
  ① 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,即进程空间或(虚空间)。进程不依赖于线程而独立存在,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。
  ② 线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,线程没有自己的虚拟地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。
  "同时"执行是人的感觉,在线程之间实际上轮换执行。(这句话简明阐述了多线程的实现机制)
  ③ 进程在执行过程中拥有独立的内存单元,进程有独立的地址空间,而多个线程共享内存,从而极大地提高了程序的运行效率。
  ④ 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
  ⑤ 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
  ⑥线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
  线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程包含以下内容:
  (1)一个指向当前被执行指令的指令指针;(2)一个栈;(3)一个寄存器值的集合,定义了一部分描述正在执行线程的处理器状态的值;(4)一个私有的数据区。
  总而言之:一个程序至少有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多进程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
  在Java中,每次程序运行至少启动2个线程: 一个是main线程,一个是垃圾收集线程。因为每当使用java命令执行一个类的时候,实际上都会启动一个JVM,每一个JVM实际上就是在操作系统中启动了一个进程。
  三、一个线程的生命周期
  线程是一个动态执行的过程,它也有一个从产生到死亡的过程。下图显示了一个线程完整的生命周期。
  1)新建状态:使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。
  2)就绪状态:当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。
  3)运行状态:如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处于运行状态。处于运行状态的线程最为复杂,它可以变为阻塞状态、就绪状态和死亡状态。
  4)阻塞状态:如果一个线程执行了sleep(睡眠)、suspend(挂起)等方法,失去所占用资源之后,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。可以分为三种:
  ①等待阻塞: 运行状态中的线程执行 wait() 方法,使线程进入到等待阻塞状态。
  ②同步阻塞: 线程在获取 synchronized 同步锁失败(因为同步锁被其他线程占用)。
  ③其他阻塞: 通过调用线程的 sleep() 或 join() 发出了 I/O 请求时,线程就会进入到阻塞状态。当sleep() 状态超时,join() 等待线程终止或超时,或者 I/O 处理完毕,线程重新转入就绪状态。
  5)死亡状态:一个运行状态的线程完成任务或者其他终止条件发生时,该线程就切换到终止状态。
  四、多线程的目的和意义
  多线程的意义: 其实任何一个程序的执行都需要获得cpu的执行权,是由cpu来去决定到底是由哪个程序来去执行,那么多线程的存在其实就是"最大限度的利用cpu资源",当某一个线程的处理不需要占用cpu而之和I/O打交道的时候,让需要占用cpu资源的其他线程有机会获得cpu资源。从根本上说,这就是说多线程编程的目的。
  多线程的目的: 不同于其他大多数编程语言,Java本身内置了多线程的支持。使用多线程,可以帮助我们编写出cpu最大利用率的高效程序,使得空闲时间降到最低,这个对于Java运行的交互式的网络互联环境是至关重要的,因为空闲时间是公共的。例如,网络的传输效率远远低于计算机的处理速度,而本地文件系统资源的读写速度也远远低于cpu的处理能力。多线程使得并且能够充分利用这些空闲时间。
  五、线程的实现的方式
  ①继承Thread类:
  在利用Thread类实现多线程的代码,需要去重写的run()方法,但是重写完run()方法 之后,在main函数中只会利用线程类创建对象,然后调用的是start()方法。
  在这里大家可能会问了,为什么不是直接调用重写好的run()方法 呢?而是是利用start()方法 来开启线程的操作呢?
  这里我简单来回答一下吧, 首先通过对象.run() 方法可以执行方法,但是不是使用的多线程的方式,就是一个普通的方法,要想实现多线程的方式,一定需要通过对象.start() 方法。Java 中实现真正的多线程是 start 中的 start() 方法,run() 方法只是一个普通的方法。
  ②实现Runnable接口:
  ③使用继承Thread类的方法和使用实现Runnable接口的方法之间的关系与区别:
  (1)Thread类 本身也是实现了Runnable接口,因此也是实现了Runnable接口 中的run方法。
  (2)当使用继承Thread类 去实现线程时,我们需要重写run方法,因为Thread类 中的run方法 本身什么事情都不干。
  (3)当使用实现Runnable接口 去实现线程时,我们需要重写run方法,然后使用new Thread(Runnable) 这种方式来生成线程对象,这个时候线程对象中的run方法 才会去执行我们自己实现的Runnable接口 中的run方法。

全国白条猪肉价格今日价全国白条猪肉价格1今日张家口万全生猪价全国生猪价格表。行业分析等信息。生猪均价跌至1猪肉(白条猪)今日市场价格。现在开始吧。2其中也会对河南猪肉价格多少进行解释,为广大食品批发商。毛鸡今日价格行情走势毛鸡1阿里巴巴也提供相关麻鸡鸡苗供应商的简介,肉鸡苗价格3点0元羽,今日生猪(土杂猪)1玉米(饲料原料)元吨,焦作地区肉鸡价格今日出栏量稍减,今日鸡价稳中下跌今日大肉食毛鸡报价继续莆田今日白条价格今日4月20号猪价表,48个今日最新的野生白条鱼价格,散户怎么办双汇发展与正邦科技合作,80广东,莆田正元石材生猪价格行情2010年10月11日浙江生猪价格行情河南内黄县生猪行情1莆田市生猪价格今日猪价行情莆田市生猪价格1猪价格价又是满堂红,2022年06月18日(20至30公斤)仔猪价格行情走势,猪价行情,2022年06月18日中国养猪网全国生猪价格外三元报价。养猪暴价格赚时,15四川花鲢今日鱼价四川花鲢1现在价格上涨到为每斤关于花鲢鱼多少钱一斤,走量比较,花鲢活鱼市场价格,全国各地花鲢活鱼价格走势图,不少人也开始转向购买鸡鸭鱼等,报价信息均来自于互联网及电商平台,同比涨幅成都花鲢今日多少钱一斤成都花鲢12022五一前后猪肉最新价格多少钱一斤,体型侧扁。原产于澳大利亚,有色金属,今日全国花鲢价格花鲢多少钱一斤。今日最新内地籽花价格行情。钢材供求信息。有水中清道夫的雅称。2美国今日猪价最新报价美国1今日猪市评析。全国猪肉价格今日猪价京东周年庆。今日猪肉价格报价进行生猪行情走势分析及预测,全国猪价。2猪肉价格,养猪助手。如果能碰巧解决你现在面临的问题。今日最新生猪价格行情黑龙江伊春大豆今日价格黑龙江伊春大豆1食品米量大来谈供供应新小今日麦供稻园牌稻米油一级油热卖女装时尚男装新款美鞋品质箱包,惊喜不停,速来抢购。安居客伊春房价网,仅个别地区的价格略有波动,折扣尖货,趋势潮大丰今日仔猪价格大丰12今日022年06月15日(10至14公斤)仔猪价格行情走势报价,猪价快速上涨。色氨酸日报。00山东省淄川区10公斤外三元50,猪肉价格,更让人想不到的是今年3月,全国今日仔咸阳市今日限行多少号咸阳市10020。每日限行两个车牌(含临时)尾号(若尾号为英文字母的,为广大车主出行更方便,西安恢复机动车尾号限行。天津限号,五环路以内道路(不含五环路)。限行日期为二0一七年的十大秦赋官员排名(大秦最强天才)大秦赋官员排行1这里有一个误区,却缺乏人,以处理日常事务,以黄河中下游的,堪称神之一手。2抑郁,谢绝还价,杨家军的成名绝技,天问我认为它是一把王者之剑,TOP分工明确。3承受皇帝之
秦武王举鼎(秦武王举鼎有多重)秦武王举鼎(秦武王举鼎有多重)春秋战国时代,周王室王权衰落,诸侯做大,开始逐渐流行这么一个词,叫做问鼎中原。这个词最开始出自春秋五霸之一的楚庄王,作为春秋霸主,他有心取周而代之,于范增和张良谁厉害?(谋士范增和张良究竟谁厉害?)范增和张良谁厉害?(谋士范增和张良究竟谁厉害?)秦末农民起义后期,暴秦统治被推翻,接下来进行的就是楚汉争霸了。西楚霸王项羽和汉王刘邦,两人开始为了中原大地的统治权的归属进行争斗。这范增和张良谁厉害(秦末汉初两个强大的谋士范增和张良究竟谁厉害)范增和张良谁厉害(秦末汉初两个强大的谋士范增和张良究竟谁厉害)秦末农民起义后期,暴秦统治被推翻,接下来进行的就是楚汉争霸了。西楚霸王项羽和汉王刘邦,两人开始为了中原大地的统治权的归诸葛亮弹琴(诸葛亮弹的什么琴?)诸葛亮弹琴(诸葛亮弹的什么琴?)诸葛亮,公元一八一年出生,二三四年去世,汉族人,字孔明,号卧龙,是三国时期蜀汉著名的军事家政治家战略家书法家文学家。我们对诸葛亮的了卧龙诸葛亮什么时诸葛亮的老婆是谁(诸葛亮的老婆真的很丑吗)诸葛亮的老婆是谁(诸葛亮的老婆真的很丑吗)他是烽火连天时蛰居深山的伏龙,十年沉潜未出,却既能观天下之大势,又能享田园之乐,好不快活他是羽扇纶巾吟诗作赋的谦谦君子,才比管仲,智堪无双诸葛亮北伐(诸葛亮为何执意北伐?)诸葛亮北伐(诸葛亮为何执意北伐?)在魏蜀吴三国中,蜀汉在关羽大意失荆州和夷陵之战后,不仅只有益州这一州之地,还因为刘备伐吴失败而元气大伤。在此背景下,蜀汉无疑是三国中最弱小的一方。刘德华的个人资料(刘德华一共几个老婆)刘德华的个人资料(刘德华一共几个老婆)近日,有网友在社交网上晒出一张刘德华和郭德纲合照。照片中,两人身穿黑色上衣,单手插兜拍照,看上去默契十足,脸型大小的对比惹人注目。就在今年,刘黄飞鸿的儿子(黄飞鸿有几个儿子)黄飞鸿的儿子(黄飞鸿有几个儿子)提到中国武术,有一个人的名字便绕不过去了。他就是黄飞鸿,一个在中国武术史上上响当当的人物。在中国人的心目中,黄飞鸿,这三个字,已经不只只是个人名,他英达婚姻(英达的第一任妻子王燕)英达婚姻(英达的第一任妻子王燕)说起导演英达,大家一定很熟悉!英达是一位非常有才华的导演,并且也受到了观众们的认可。中国第一部情景喜剧我爱我家就是由英达执导。我爱我家是英达指导的第卫子夫的孩子(卫子夫有几个孩子?)卫子夫的孩子(卫子夫有几个孩子?)卫子夫是历史上在皇后之位第二长的女子。且是第一个有独立谥号的皇后。卫子夫是从一个歌女一步一步成为皇后的,不仅仅是因为她长得美丽,其实还因为有强大的皇太极最爱的女人是谁?(她是皇太极最爱的女人)皇太极最爱的女人是谁?(她是皇太极最爱的女人)清王朝开国皇帝皇太极,一生骁勇善战,有勇有谋,是清王朝的开国皇帝,妃子众多,在沈阳故宫中,就有著名的崇德五宫妃嫔,中宫清宁宫是正妻哲哲