




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA并发编程学习笔记之六RUNNABLE和THREAD实现多线程的区别(含代码)兰亭风雨的专栏倚栏听风雨,淡看江湖路,淡泊以明志,宁静以致远。JAVA并发编程学习笔记之六RUNNABLE和THREAD实现多线程的区别含代码分类JAVA并发编程7201312061015449人阅读评论0收藏举报JAVARUNNABLETHREAD区别共享转载请注明出处/JAVA中实现多线程有两种方法继承THREAD类、实现RUNNABLE接口,在程序开发中只要是多线程,肯定永远以实现RUNNABLE接口为主,因为实现RUNNABLE接口相比继承THREAD类有如下优势1、可以避免由于JAVA的单继承特性而带来的局限2、增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的3、适合多个相同程序代码的线程区处理同一资源的情况。下面以典型的买票程序基本都是以这个为例子为例,来说明二者的区别。首先通过继承THREAD类实现,代码如下CLASSMYTHREADEXTENDSTHREADPRIVATEINTTICKET5PUBLICVOIDRUNFORINTI0I10IIFTICKET0/NTLN“TICKET“TICKETPUBLICCLASSTHREADDEMOPUBLICSTATICVOIDMAINSTRINGARGSNEWMYTHREADSTARTNEWMYTHREADSTARTNEWMYTHREADSTART1某次的执行结果如下从结果中可以看出,每个线程单独卖了5张票,即独立地完成了买票的任务,但实际应用中,比如火车站售票,需要多个线程去共同完成任务,在本例中,即多个线程共同买5张票。下面是通过实现RUNNABLE接口实现的多线程程序,代码如下CLASSMYTHREADIMPLEMENTSRUNNABLEPRIVATEINTTICKET5PUBLICVOIDRUNFORINTI0I10IIFTICKET0/NTLN“TICKET“TICKETPUBLICCLASSRUNNABLEDEMOPUBLICSTATICVOIDMAINSTRINGARGSMYTHREADMYNEWMYTHREADNEWTHREADMYSTARTNEWTHREADMYSTARTNEWTHREADMYSTART某次的执行结果如下从结果中可以看出,三个线程一共卖了5张票,即它们共同完成了买票的任务,实现了资源的共享。针对以上代码补充三点1、在第二种方法RUNNABLE中,TICKET输出的顺序并不是54321,这是因为线程执行的时机难以预测,TICKET并不是原子操作。2、在第一种方法中,我们NEW了3个THREAD对象,即三个线程分别执行三个对象中的代码,因此便是三个线程去独立地完成卖票的任务而在第二种方法中,我们同样也NEW了3个THREAD对象,但只有一个RUNNABLE对象,3个THREAD对象共享这个RUNNABLE对象中的代码,因此,便会出现3个线程共同2THREAD对象共享这个RUNNABLE对象中的代码,因此,便会出现3个线程共同完成卖票任务的结果。如果我们NEW出3个RUNNABLE对象,作为参数分别传入3个THREAD对象中,那么3个线程便会独立执行各自RUNNABLE对象中的代码,即3个线程各自卖5张票。3、在第二种方法中,由于3个THREAD对象共同执行一个RUNNABLE对象中的代码,因此可能会造成线程的不安全,比如可能TICKET会输出1如果我们SYSTEMOUT语句前加上线程休眠操作,该情况将很有可能出现,这种情况的出现是由于,一个线程在判断TICKET为10后,还没有来得及减1,另一个线程已经将TICKET减1,变为了0,那么接下来之前的线程再将TICKET减1,便得到了1。这就需要加入同步操作即互斥锁,确保同一时刻只有一个线程在执行每次FOR循环中的操作。而在第一种方法中,并不需要加入同步操作,因为每个线程执行自己THREAD对象中的代码,不存在多个线程共同执行同一个方法的情况。更多上一篇JAVA并发编程学习笔记之五VOLATILE变量修饰符意料之外的问题含代码下一篇JAVA并发编程学习笔记之七使用SYNCHRONIZED获取互斥锁的几点说明顶2踩0查看评论以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场核心技术类目全部主题JAVAVPNANDROIDIOSERPIE10ECLIPSECRMJAVASCRIPTUBUNTUNFCWAPJQUERY数据库BI6HTML5SPRINGAPACHEHADOOPNETAPIHTMLSDKIISFEDORAXMLLBSUNITYSPLASHTOPUMLCOMPONENTSWINDOWSMOBILERAILSQEMUKDECASSANDRACLOUDSTACKFTCCOREMAILOPHONECOUCHBASE云计算IOS6RACKSPACEWEBAPPSPRINGSIDEMAEMOCOMPUWARE大数据APTECHPERLTORNADORUBYHIBERNATETHINKPHPSPARKHBASEPURESOLRANGULARCLOUDFOUNDRYREDISSCALADJANGOBOOTSTRAP个人资料MMC_MAODUN访问32340次积分1313分排名第9244名原创77篇转载18篇译文1篇3评论93条我的介绍非计算机科班出身,12级在读硕士,爱好ANDORID开发,喜欢算法设计,怀揣着对互联网行业的憧憬与向往,开启了我的IT梦想之旅我的邮箱ZYB_MAODUN163我的微博/0文章搜索博客专栏JAVA并发编程系列文章18篇阅读7230JAVATCP/IPSOCKET编程学习笔记系列文章12篇阅读7048文章分类感受JAVA5JAVA网络编程13JAVA并发编程18数据结构与算法随笔11ANDROID之旅14ANDROID实时监控项目4ANDROID多功能课程表项目1领悟C/C12设计模式2ACM水题4操作系统2互联网协议3心路历程7文章存档2013年12月232013年11月212013年10月112013年09月202013年05月22013年04月19阅读排行详细讲解二叉树三种遍历方式的递归与非递归实现2499JAVATCP/IPSOCKET编程读书笔记之九深入剖析SOCKET数据传输的底层实现1046JAVATCP/IPSOCKET编程读书笔记之七JAVANIOSOCKETVS标准IOSOCKET955JAVA并发编程学习笔记之十二线程间通信中NOTIFYALL造成的早期通知问题含代码938JAVATCP/IPSOCKET编程读书笔记之一TCPSOCKET含代码899HTTP协议笔记830女友的心酸考博路822帮你理清JAVA中字符与字节的编码关系748JAVATCP/IPSOCKET编程读书笔记之五基于线程池的TCP服务器含代码724ANDROID多功能课程表项目实现完整版706评论排行详细讲解二叉树三种遍历方式的递归与非递归实现20考研那些事那些年,我们一起度过的猪狗不如的生活13HTTP协议笔记7帮你理清JAVA中字符与字节的编码关系6JAVATCP/IPSOCKET编程读书笔记之七JAVANIOSOCKETVS标准IOSOCKET6JAVA并发编程学习笔记之九死锁含代码4JAVATCP/IPSOCKET编程读书笔记之六TCPSOCKET通信中由READ返回值造成的的死锁问题含代4JAVATCP/IPSOCKET编程读书笔记之六TCPSOCKET通信中由READ返回值造成的的死锁问题含代码4JAVATCP/IPSOCKET编程读书笔记之九深入剖析SOCKET数据传输的底层实现4JAVA并发编程学习笔记之十五并发编程中实现内存可见的两种方法比较加锁和VOLATILE变量3JAVA并发编程学习笔记之十二线程间通信中NOTIFYALL造成的早期通知问题含代码3推荐文章最新评论ANDROID多功能课程表项目实现完整版MMC_MAODUNU012399232已经加上了互联网协议入门二MMC_MAODUN不错的两篇文章,浅显易懂ANDROID多功能课程表项目实现完整版U012399232楼主能不能贴下EDIT_SHEDULEXMLLIST_VXMLLIST_V2XML这三个布局文JAVA并发编程学习笔记之十五并发编程中实现内存可见的两种方法比较加锁和VOLATILE变量LIANGSHUAIS果然是笔记啊。JAVA并发编程学习笔记之十二线程间通信中NOTIFYALL造成的早期通知问题含代码WTBEE多线程是理解的难点学习一下JAVA并发编程学习笔记之十二线程间通信中NOTIFYALL造成的早期通知
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 结构化面试答题审题及答题技巧
- 《电力拖动控制与实训》课件-具有自锁的电动机正转控制电路
- 新安全法知识题库及答案
- 小数乘整数的题库及答案
- 真好教学课件
- 数学思维教学课件
- 护理肺栓塞课件讲解
- 雨雪冰冻天气防范汇报(6篇)
- 协商方案是什么(3篇)
- 村里租房布置方案(3篇)
- 2025昆明医科大学海源学院辅导员考试试题及答案
- 路沿石购销合同模板
- 谁是消费“领头羊”:人口周期改变消费模式221mb
- 2024福建省闽投深海养殖装备租赁有限责任公司招聘7人笔试参考题库附带答案详解
- 2025年江西省赣州市八年级中考模拟预测生物试题(含答案)
- 2025届上海市闵行区21学校七年级生物第二学期期末调研试题含解析
- 车牌过户协议书范本
- 火灾自动报警系统故障应急预案
- 《拓印新貌》教学课件-2024-2025学年沪书画版(五四学制)(2024)初中美术六年级下册
- 湖北省武汉市2025年中考语文二模试题(含答案)
- 2025-2030中国海底光缆产业市场发展分析及前景趋势与投资研究报告
评论
0/150
提交评论