《跨平台程序设计语言》课件——第10章 多线程.pptx

《跨平台程序设计语言》课件——第10章 多线程.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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()方法使线程

文档评论(0)

青柠职教 + 关注
实名认证
服务提供商

从业10年,专注职业教育专业建设,实训室建设等。

1亿VIP精品文档

相关文档