- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
13-Java多线程编程实例讲解
《Java程序设计》 13. Java多线程编程实例讲解 13.1 多线程应用实例—计算素数 13.2 多线程应用实例—计数程序 13.3 课后作业 13.1 多线程应用实例—计算素数 本节给出一个用Java语言编写的比较经典的多线程应用程序([2], P122)。 该Java程序实现的功能是:计算并输出第N个素数,N值可能很大,比如10000;可同时计算若干个素数,比如同时计算并输出第10000、10001、10002个素数。 本程序采用多线程技术实现:由于N值很大时,计算第N个素数的计算量还是比较大;特别地,要求可以同时计算若干个素数,这样把计算并输出第N个素数的功能用线程实现,如果要同时计算若干个素数,则计算每个素数单独开启一个线程。 计算素数的功能用PrimeFinder类实现。 程序清单:chapter13\PrimeFinder.java。 13.1 多线程应用实例—计算素数 本实例采用第2种方式(实现runnable接口创建线程类)来创建并启动线程。 13.1 多线程应用实例—计算素数 以下PrimeThreads类是使用PrimeFinder类的应用程序。 程序清单:chapter13\PrimeThreads.java。 应用程序PrimeThreads可以同时查找多个素数。用户可通过命令行参数指定要查找哪几个素数。要在NetBeans中设置命令行参数,详见文档:Java相关开发工具经验汇总.doc。 13.1 多线程应用实例—计算素数 13.1 多线程应用实例—计算素数 使用命令行参数“10000 10001 10002”运行该程序,其输出可能为: Looking for prime 10000 Looking for prime 10001 Looking for prime 10002 Prime 10000 is 104729 Prime 10001 is 104743 Prime 10002 is 104759 13.1 多线程应用实例—计算素数 线程结束的顺序是不确定的(特别是上述三个线程所花费的时间很接近),因此输出也可能为: Looking for prime 10000 Looking for prime 10001 Looking for prime 10002 Prime 10002 is 104759 Prime 10000 is 104729 Prime 10001 is 104743 以上输出表明,寻找第10002个素数的线程比寻找第10000个素数的线程先结束。 13.2 多线程应用实例—计数程序13.2.1 未使用多线程技术的计数程序 程序清单:chapter13\Counter.java。 以上程序的运行界面如下图所示。 当单击“Start”按钮时,程序调用addCounter方法,并在文本框中开始计数,从0到99。每次计数后调用Thread类的静态方法sleep使得当前线程暂停50毫秒,此方法的调用并不会新建线程,而是暂停当前线程的活动。 13.2 多线程应用实例—计数程序13.2.1 未使用多线程技术的计数程序 如果希望在计数过程中停止程序运行,似乎单击“Close”按钮就可以停止计数并关闭窗口。但是,实际上却发现“Close”按钮的单击“似乎”不起作用,计数依然在继续;当计数到99,没有单击“Close”按钮,程序却退出了。原因何在呢? 这是因为该程序是单线程运行的,一旦某个任务启动了,必须要等到这个任务完成才能进行其他任务的执行。因此当计数开始后,程序不会对其他操作有所反应,而是必须执行完100次循环,然后才能响应“Close”按钮的单击操作,关闭程序。 13.2 多线程应用实例—计数程序13.2.1 未使用多线程技术的计数程序 可以看出,上面的单线程程序缺乏交互性。如果希望在计数的同时,程序也能响应其他操作,这需要通过线程机制来实现。在线程机制中,CPU可以为每个线程都分配自己的一部分时间。每个线程都“感觉”自己好像拥有整个CPU,但CPU的计算时间实际却是在所有线程间分摊的。 13.2 多线程应用实例—计数程序13.2.2 实现一个计数线程的计数程序 实现线程的前提是对程序子任务的划分。对于上面的例子,现在把计数程序分为两个线程:一个用于计数,一个用于事件调度(即主线程)。 程序清单:chapter13.test1\CounterThread.java。 以上程序的运行界面如下图所示。 13.2 多线程应用实例—计数程序13.2.2 实现一个计数线程的计数程序 从上面的程序可以看出,创建线程的方法很简单:将需要独立运行的子任务代码放到从Thread类派生类的run方法中。然后在主线程中原先调用该子任务的地方先创建一个该线程类的实例,再调用线程类
您可能关注的文档
最近下载
- 《低钠血症的中国专家共识(2023)》解读PPT课件.pptx VIP
- 初中语文通用版 现代文阅读答题技巧(公式化模板 + 完整版提分攻略).docx VIP
- 期刊合作办刊协议书.docx VIP
- 驭胜s350维修手册及电路图n351整车电路图全.pdf VIP
- 混凝土热工计算软件.xls VIP
- 小学信息技术教学计划.docx VIP
- 八 观察物体(二)(单元教学设计)苏教版 三年级上册数学2025版.pdf
- 七上语文常考必背重点知识梳理总结(答案版)【2024新版】.pdf VIP
- 最全面总工会招聘考试工会知识模拟试卷及答案(共五套).docx
- 2020年总工会招聘考试工会知识模拟试卷及答案(一).docx VIP
原创力文档


文档评论(0)