Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第11章 多线程.ppt

Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第11章 多线程.ppt

ID:50051448

大小:527.50 KB

页数:44页

时间:2020-03-08

Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第11章 多线程.ppt_第1页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第11章 多线程.ppt_第2页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第11章 多线程.ppt_第3页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第11章 多线程.ppt_第4页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第11章 多线程.ppt_第5页
资源描述:

《Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第11章 多线程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第11章多线程主讲人:程裕强主要内容了解进程与线程的概念掌握创建线程的两种方法了解线程常用的方法了解线程的生命周期了解线程安全了解临界资源了解互斥机制了解同步机制了解守护线程11.1基本概念计算机操作系统的发展分为多个阶段:1)单用户单任务操作系统,比如DOS,只允许登陆的用户是一个,只可以运行一个程序,该程序退出后才能运行其他程序;2)单用户多任务操作系统,比如Windows98,只允许登陆的用户是一个,同时可以远行多个程序;3)多任务多用户操作系统:允许多个用户使用,同时可以远行多个程序,比如WindowsXP、Linux。一个任务一般对应一个进程。进

2、程是一个程序在给定的数据集合上的一次执行过程,是系统进行资源分配和运行调度的独立单位。线程是某一进程中一路单独运行的程序。也就是说,进程由若干线程构成,线程存在于进程之中。各线程共享相同的代码和全局数据,但各有其自己的堆栈。由于所有线程共享同样的代码和全局数据,它们比进程更紧密,比单独的进程间更趋向于相互作用,线程间的相互作用更容易些,因为它们本身就有某些供通信用的共享内存:进程的全局数据。比如,我登陆一个QQ,操作系统中就要一个QQ进程在运行,QQ进程中又有多个线程(好友消息线程、文件传递线程、QQ等级线程、QQ群线程)。11.2创建多线程前面写的程序大

3、都是单线程程序,只有一条执行路径,即是从主方法第一句开始执行,依次执行每条语句直到主方法的最后一句,也就是说该Java应用程序的进程只有一个线程。Java是多线程的操作语言,提供了线程处理机制。在Java中可以有2种方式实现多线程操作,一是继承Thread类,另一种是实现Runnable接口。11.2.1ThreadThread类定义在java.lang包中,只要Thread的子类重写了run方法就可以实现多线程。run方法规定了该线程的具体使命。Thread类start方法:启动线程,通过JVM自动调用Thread类的run方法。例1:继承Thread类

4、,定义多线程。publicclassThreadTestextendsThread{privateStringname;//定义name属性publicMyThread(Stringname){this.name=name;}publicvoidrun(){//重写for(inti=0;i<10;i++){System.out.println(name+i);}}publicstaticvoidmain(String[]args){ThreadTestt1=newThreadTest("线程A");ThreadTestt2=newThreadTest("线

5、程B");t1.start();//启动线程At2.start();//启动线程Bfor(inti=0;i<10;i++){System.out.println("主线程"+i);}}}由执行结果可以看出主线程、线程A和线程B交替执行,也就是三个线程同时向前推进执行。11.2.2Runnable如果一个子类需要继承某个父类又要实现多线程,该怎么办?因为Java是单继承,子类不能同时继承两个父类,但是可以实现多个接口。也就是说子类可以实现Runnable接口来实现多线程机制。Runnable接口中只有一个方法voidrun()方法,子类只需实现run方法就可

6、实现Runnable接口。例2:测试实现Runnable的多线程程序。publicclassRunnableTestimplementsRunnable{privateStringname;//定义name属性publicRunnableTest(Stringname){this.name=name;}publicvoidrun(){//重写for(inti=0;i<100;i++)System.out.println(name+i);}publicstaticvoidmain(String[]args){RunnableTestrun1=newRunna

7、bleTest("张三");RunnableTestrun2=newRunnableTest("李四");newThread(run1).start();//启动“张三”线程newThread(run2).start();//启动“李四”线程for(inti=0;i<100;i++)System.out.println("主线程"+i);}}可以发现主线程、张三线程和李四线程交替执行。11.2.3简单应用(选学)例3:假设当日从A地到B地的火车票只有10张,允许在3个窗口同时发售这10张火车票,通过多线程模拟火车站售票系统。每个窗口相当于1个线程,3个线程

8、处理同一个资源,即是10张火车票。对于同一张车票只能出售一次。首先

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。