Java语言实用教程第10章ppt课件.ppt

Java语言实用教程第10章ppt课件.ppt

ID:59417099

大小:263.00 KB

页数:52页

时间:2020-09-19

Java语言实用教程第10章ppt课件.ppt_第1页
Java语言实用教程第10章ppt课件.ppt_第2页
Java语言实用教程第10章ppt课件.ppt_第3页
Java语言实用教程第10章ppt课件.ppt_第4页
Java语言实用教程第10章ppt课件.ppt_第5页
资源描述:

《Java语言实用教程第10章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章多线程机制10.1多线程的概念10.2创建线程10.3线程的优先级10.4线程的控制10.5线程的同步机制与共享资源10.6何时使用多线程及注意问题习题程序(program)是对数据描述与操作的代码的集合,是应用程序执行的脚本。进程(process)是程序的一次执行过程,是操作系统运行程序的基本单位。程序是静态的,进程是动态的。系统运行一个程序就是一个进程从创建、运行到消亡的过程。系统可以为一个程序同时创建多个进程。每一个进程都有自己独立的一块内存空间和一组系统资源,即使同类进程之间也不会共享系统资源。10.1多线程的概念10.1.1程序、进程和多任务多任务是指在

2、一个系统中可以同时运行多个程序,即有多个独立运行的任务,每一个任务对应一个进程。由于一个CPU在同一时刻只能执行一个程序中的一条指令。实际上,多任务运行的并发机制使这些任务交替运行,因间隔时间短,所以感觉就是多个程序在同时运行。运行一个程序时,程序内部的代码都是按顺序先后执行的。如果能够将一个进程划分为更小的运行单位,则程序中一些彼此相对独立的代码段可以重叠运行,将会获得更高的执行效率。线程就是解决这个问题的。线程是比进程更小的运行单位,是程序中单个顺序的流控制。一个进程中可以包含多个线程。线程是一种特殊的多任务方式。当一个程序执行多线程时,可以运行两个或更多的由同一个程

3、序启动的任务。这样,一个程序可以使得多个活动任务同时发生。10.1.2线程线程与任何一个程序一样有一个开始、一系列可执行的命令序列、一个结束。在执行的任何时刻,只有一个执行点。线程与程序不同的是线程本身不能运行,它只能包含在程序中,只能在程序中执行。一个线程在程序运行时,必须争取到为自己分配的系统资源,如执行堆栈、程序计数器,等等。多线程是相对于单线程而言的,指的是在一个程序中可以定义多个线程并同时运行它们,每个线程可以执行不同的任务。与进程不同的是,同类多线程共享一块内存空间和一组系统资源,所以,系统创建多线程开销相对较小。因此,也称线程为轻负荷进程。多线程和多任务是两

4、个既有联系又有区别的概念。多任务是针对操作系统而言的,代表着操作系统可以同时执行的程序个数;多线程是针对一个程序而言的,代表着一个程序内部可以同时执行的线程个数,而每个线程可以完成不同的任务。10.1.3多线程1.线程的生命周期与状态一个线程也有从创建、运行到消亡的过程,称为线程的生命周期。使用线程的状态表明线程处于生命周期的哪个阶段。线程有创建(New)、可运行(Runnable)、运行中(Running)、挂起(NotRunnable)、死亡(Dead)5种状态。通过线程的控制和调度可使线程在这几种状态间转化。Java语言内在支持多线程,所有的类都是在多线程思想下定义

5、的。Java的每个程序自动拥有一个线程,称为主线程。当程序加载到内存时,启动主线程。要加载其他线程,程序就要使用Thread类(专门用来创建和控制线程的类)或Runnable接口。10.1.4线程的生命周期与Java的多线程机制2.Java的多线程机制java.lang中的线程类Thread封装了所有需要的线程操作控制,有很多方法用来控制一个线程的运行、休眠、挂起或停止。这就是Java的多线程机制。使用Java的多线程机制编程可将程序的任务分解为几个并行的子任务,通过线程的并发执行来加速程序运行,提高CPU的利用率。例10.1在程序中通过继承Thread类创建一个线程子类

6、testThread,通过Thread1主类同时运行两个线程对象t1和t2,运行结果如图10.1所示。classThread1{publicstaticvoidmain(Stringargs[]){testThreadt1=newtestThread(″thread1″);testThreadt2=newtestThread(″thread2″);t1.start();t2.start();}}10.2创建线程10.2.1通过继承Thread类创建线程classtestThreadextendsThread{publictestThread(Strin

7、gstr){super(str);//调用父类的构造方法为线程对象命名}publicvoidrun(){for(inti=0;i<3;i++){System.out.println(getName()+″在运行″);try{sleep(1000);//用休眠1000毫秒来区分哪个线程在运行System.out.println(getName()+″在休眠″);}catch(InterruptedExceptione){}}System.out.println(getName()+″已结束″);}}图1

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

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

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