- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第10章多线程1.多线程程序主讲人:_________
多线程程序publicclassExample01{publicstaticvoidmain(String[]args){ MyThread01myThread=newMyThread01();//创建MyThread01实例对象 myThread.run();//调用MyThread01类的run()方法 while(true){//该循环是一个死循环,打印输出语句 System.out.println(Main方法在运行); }}}classMyThread01{publicvoidrun(){ while(true){//该循环是一个死循环,打印输出语句 System.out.println(MyThread类的run()方法在运行); }}}在学习多线程之前,先来看一个单线程程序的案例。具体代码如下所示。单线程案例
多线程程序运行代码,控制台显示的运行结果如下图所示。运行结果
多线程程序由上图可知,程序一直打印“MyThread类的run()方法在运行”,这是因为该程序是一个单线程程序,在调用MyThread01类的run()方法时,遇到定义的死循环中,循环会一直进行。因此,MyThread类的打印语句将被无限执行,而main()方法中的打印语句无法得到执行。如果希望代码两个while循环中的的println语句能够并发执行,就需要实现多线程。运行结果分析
多线程程序为了实现多线程,Java提供了一个线程类Thread,通过继承Thread类,并重写Thread类中的run()方法便可实现多线程。在Thread类中提供了一个start()方法用于启动新线程,新线程启动后,JVM会自动调用run()方法,如果子类重写了run()方法便会执行子类中的run()方法。线程类Thread
多线程程序publicclassExample02{publicstaticvoidmain(String[]args){ MyThread02myThread=newMyThread02();//创建MyThread02的线程对象 myThread.start();//开启线程 while(true){//通过死循环语句打印输出 System.out.println(main()方法在运行); }}}classMyThread02extendsThread{publicvoidrun(){ while(true){//通过死循环语句打印输出 System.out.println(MyThread类的run()方法在运行); }}}下面通过继承Thread类的方式来实现多线程。具体代码如下所示。多线程案例
多线程程序运行代码,控制台显示的运行结果如下图所示。由图可知,两个循环中的语句都有输出,说明程序实现了多线程。运行结果
单线程和多线程的区别从图可以看出,单线程的程序在运行时,会按照代码的调用顺序执行,而在多线程中,main()方法和MyThread类的run()方法却可以同时运行,互不影响。单线程和多线程的区别
第10章多线程2.线程同步主讲人:_________
线程安全问题假设售票厅有四个窗口可发售某日某次列车的100张车票,这时100张车票可以看做共享资源,在程序中只能创建一个售票对象,然后开启多个线程去运行同一个售票对象的售票方法,简单来说就是四个线程运行同一个售票程序。上述售票案例中,极有可能碰到“意外”情况,例如一张票被打印多次,或者打印出的票号为0甚至负数。这些“意外”都是由多线程操作共享资源ticket所导致的线程安全问题。模拟上述所说的“意外”情况。假设四个窗口同时出售10张票,并在售票的代码中使用sleep()方法,令每次售票时线程休眠300毫秒。具体代码如下。案例说明案例分析
线程安全问题步骤一:定义SaleThread类并实现Runnable接口;定义私有int类型变量tickets,表示总票数,初始值为10;重写run()方法,在run()方法中使用while循环售票;调用sleep()方法使线程
您可能关注的文档
- 《跨平台程序设计语言》课件——第 3 章 类和对象.pptx
- 《跨平台程序设计语言》课件——第 4 章 类的封装性、继承性、多态性及接口.pptx
- 《跨平台程序设计语言》课件——第1章 Java语言概述.pptx
- 《跨平台程序设计语言》课件——第2章 Java 基础语法.pptx
- 《跨平台程序设计语言》课件——第5章 数组、字符串和枚举.pptx
- 《跨平台程序设计语言》课件——第6章 Java常用类及接口.pptx
- 《跨平台程序设计语言》课件——第7章 异常处理.pptx
- 《跨平台程序设计语言》课件——第8章 泛型与集合.pptx
- 《跨平台程序设计语言》课件——第九章 流和文件.pptx
- 《人工智能应用开发》课件——第1章课程介绍+绪论.pptx
最近下载
- 第七章swing事件模型.pdf
- 公司行政岗位年终述职报告.pptx VIP
- 81404综采工作面作业规程6.pdf VIP
- 小学英语新人教版PEP三年级上册Unit 1 Making friends Part A第1课时教学课件(2024秋).pptx
- 洗煤厂年入洗60万吨原煤扩建项目可行性分析报告.pdf
- 车辆自适应巡航系统性能要求及测试方法.pdf VIP
- GB_T 3880.3-2024一般工业用铝及铝合金板、带材 第 3 部分尺寸偏差.docx VIP
- 半导体管图示仪操作说明.xls
- 东软NetEye防火墙V3.2.4 SNMP MIB参考指南.pdf VIP
- 广西三甲医院各地市分布.docx VIP
文档评论(0)