- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
JUC多线程(一)
学习目标:
掌握多线程的创建掌握多线程的创建
掌握线程安全的处理掌握线程安全的处理
了解线程状态了解线程状态
掌握线程停止的两种方法掌握线程停止的两种方法
了解线程的原子性,可见性和有序性了解线程的原子性,可见性和有序性
理解内存可见性的原理理解内存可见性的原理
synchronized解决内存可见性
掌握掌握synchronized解决内存可见性
1.1.多线程基础多线程基础
一个采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势在于充一个采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势在于充
分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使
分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使
得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。
得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。
更为重要的是,由于同一进程的所有线程是共享同一内存,所以不需要特殊的数
更为重要的是,由于同一进程的所有线程是共享同一内存,所以不需要特殊的数
据传送机制,不需要建立共享区或共享文件,从而使得不同任务之间的协调操
据传送机制,不需要建立共享区或共享文件,从而使得不同任务之间的协调操
作与运行、数据的交互、资源的分配等问题更加易于解决。
作与运行、数据的交互、资源的分配等问题更加易于解决。
1.1线程和进程线程和进程
进程:
是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用
是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用
程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基
程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基
本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。
本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。
线程:
进程的一个独立执行单元;一个进程可以同时并发的运行多个线程,可以理
进程的一个独立执行单元;一个进程可以同时并发的运行多个线程,可以理
解为一个进程便相当于一个单CPU操作系统,而线程便是这个系统中运行的多个任
解为一个进程便相当于一个单CPU操作系统,而线程便是这个系统中运行的多个任
务。
进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立
的,至少有一个线程。
线程:堆空间是共享的,栈空间是独立的,线程消耗的资源比进程小的多。
线程:堆空间是共享的,栈空间是独立的,线程消耗的资源比进程小的多。
注意:
1.因为一个进程中的多个线程是并发运行的,那么从微观角度看也是有先后顺序
1.因为一个进程中的多个线程是并发运行的,那么从微观角度看也是有先后顺序
的,哪个线程执行完全取决于
的,哪个线程执行完全取决于
CPU的调度,程序员是不能完全控制的(可以设置线程优先级)。而这也就造
CPU的调度,程序员是不能完制的(可以设置线程优先级)。而这也就造
成的多线程的随机性。
成的多线程的随机性。
2.Java程序的进程里面至少包含两个线程,主线程也就是main()方法线程,另外
2.Java程序的进程含两个线程,主线程也就是main(方法线程,另外
一个是回收机制线程。每
一个是回收机制线程。每
当使用java命令执行一个类时,实际上都会启动一个JVM,每一个JVM实际上
当使用java命令执行一个类时,实际一个JV,每一个JVM实际上
就是在操作系统中启动了一个
就是在操作系统中启动了一个
线程,jaa本身具备了的收集机制,所以在Java运行时至少会启动两个线
线程,java本身具备了的收集机制,所以在Java运行时至少会启动两个线
程。
程。
3由于创建一个线程的开销比创建一个进程的开销
文档评论(0)