《线程和多线程》PPT课件

《线程和多线程》PPT课件

ID:39663339

大小:275.34 KB

页数:97页

时间:2019-07-08

《线程和多线程》PPT课件_第1页
《线程和多线程》PPT课件_第2页
《线程和多线程》PPT课件_第3页
《线程和多线程》PPT课件_第4页
《线程和多线程》PPT课件_第5页
资源描述:

《《线程和多线程》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第13章线程线程和多线程线程的概念在程序开始投入运行时,系统从程序入口开始按语句的顺序(其中包括顺序、分支和循环)完成相应指令直至结尾,从出口退出,同时整个程序结束。这样的语句结构称之为进程,或者说进程就是程序在处理机中的一次运行。线程的概念一个进程既包括其所要执行的指令,也包括了执行指令所需的任何系统资源,如CPU、内存空间、I/O端口等,不同进程所占用的系统资源相对独立。线程的概念目前所流行的操作系统中,大部分都是支持多任务的(如Windows3.X,WindowsNT,Windows95,OS/2及UNIX的各个版

2、本),这实际就是一种多进程的概念——每一个任务就是一个进程。线程的概念线程是比进程单位更小的执行单位,在形式上同进程十分相似——都是用一个顺序执行的语句序列来完成特定的功能。线程没有入口,也没有出口,因此其自身不能自动运行,而必须栖身于某一进程之中,由进程触发执行。线程的概念在系统资源的使用上,属于同一进程的所有线程共享该进程的系统资源,但是线程之间切换的速度比进程切换要快得多。线程的概念从微观上讲,一个时间里只能有一个作业被执行,在宏观上可使多个作业被同时执行,即等同于要让多台计算机同时工作,使系统资源特别是CPU的利

3、用率得到提高,从而提高了整个程序的执行效率。线程的概念为了达到多线程的效果,Java语言把线程或执行环境(executioncontext)当作一种拥有自己的程序代码和数据的对CPU的封装单位,由虚拟机提供控制。Java类库中的类java.lang.Thread允许创建并控制所创建的线程。线程的结构下图是线程运行机制示意图:CPUCodeData线程的结构线程包含三个主要部分:虚拟CPU本身,CPU执行的代码,代码操作的数据。线程的结构在Java中,虚拟CPU体现于Thread类中。当一个线程被构造时,它由构造方法参数、

4、执行代码、操作数据来初始化。创建线程一——继承Thread类将一个类定义为Thread的子类,那么这个类就可以用来表示线程。应用这种形式的构造方法创建线程对象时不用给出任何参数。这个类中有一个至关重要的方法——publicvoidrun(),这个方法称为线程体,它是整个线程的核心,线程所要完成任务的代码都定义在线程体中,实际上不同功能的线程之间的区别就在于它们线程体的不同。程序13-1publicclassmyThreadextendsThread{publicvoidrun(){while(running){//执行若

5、干操作sleep(100);}}publicstaticvoidmain(Stringargs[]){Threadt=newmyThread();//执行若干操作}}创建线程二——实现Runnable接口Runnable是Java中用以实现线程的接口,从根本上讲,任何实现线程功能的类都必须实现该接口。Runnable接口中只定义了一个方法就是run()方法,也就是线程体。创建线程二——实现Runnable接口Thread第二种构造方法中包含有一个Runnable实例的参数,这就是说,必须定义一个实现Runnable接口的

6、类并产生一个该类的实例,对该实例的引用就是适合于这个构造方法的参数。程序13-2publicclassxyzimplementsRunnable{inti;publicvoidrun(){while(true){System.out.println("Hello"+i++);}}}程序13-2可以构造一个线程如下:Runnabler=newxyz();Threadt=newThread(r);线程运行环境CPUCodeDataThreadtxyzrclassxyz线程关于两种创建线程方法的讨论1.适用于采用实现Runna

7、ble接口方法的情况因为Java只允许单继承,如果一个类已经继承了Thread,就不能再继承其他类。比如对于Applet程序,由于必须继承了java.applet.Applet,因此就只能采取这种实现接口的方法。由于某些原因而几次被迫采用实现Runnable接口的方法,可能会出于保持程序风格的一贯性而继续使用这种方法。关于两种创建线程方法的讨论2.适用于采用继承Thread方法的情况当一个run()方法置于Thread类的子类中时,this实际上引用的是控制当前运行系统的Thread实例,所以,代码不必写得繁琐:Thre

8、ad.currentThread().suspend();可简单地写为:suspend();线程的启动必须通过方法start()来启动线程,start()方法也在Thread类中。线程的调度在一台只具有一个CPU的机器上,CPU在同一时间只能分配给一个线程做一件事。当有多于一个的线程工作时,在Java中,线程调度通常

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

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

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