1 / 51
文档名称:

天津科技大学Java第十章 线程.pptx

格式:pptx   大小:153KB   页数:51页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

天津科技大学Java第十章 线程.pptx

上传人:cai.li.bin 2017/11/2 文件大小:153 KB

下载得到文件列表

天津科技大学Java第十章 线程.pptx

文档介绍

文档介绍:第10章线程
线程的概念
线程状态与生命周期
线程优先级与线程调度
线程的创建
线程同步

上个世纪80年代,线程被引入。
多线程在提高系统效率等方面有显著作用。
在单处理器的计算机上,多个线程实际上并不能并发执行。
系统可以按照某种调度策略,在线程间切换。
线程间的切换由系统在极短的时间内完成。所以给人的印象是并发执行。

进程是一个内核级的实体
进程结构的所有成分都在内核空间中,
一个用户程序不能直接访问这些数据。
线程是一个用户级的实体,
线程结构驻留在用户空间中。
能够被普通的用户级方法直接访问。

线程与进程在概念上是相关的
进程由代码、数据、内核状态和一组寄存器组成
线程由表示程序运行状态的寄存器以及堆栈组成。
一个进程可以分成几个线程来执行。进程作为系统资源分配的基本单位
线程作为操作系统调度的基本单位。同一个进程的多个线程之间可以共享资源。

程序、进程和线程的关系
程序是一段静态的代码,它是应用程序执行的蓝本;
进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程。这个过程也是进程本身从产生、发展到消亡的过程。
作为执行蓝本的同一段程序,可以被多次加载到系统的不同内存区域执行,形成不同的进程。
线程是比进程更小的单位。一个进程在其执行过程中,可以产生多个线程, 形成多个执行流。每个执行流即每个线程也有它自身的产生、存在和消亡的过程,也是个动态概念。

多线程程序设计
线程与单执行流的程序
线程与单执行流的程序很类似,但一个线程本身并不是一个程序,它必须运行于一个进程之中。
线程可以定义为一个程序中的单个执行流,
多线程是指同时存在几个执行流,按几条不同的执行线索共同工作,通过并发合作完成某项任务。
Java在语言级支持多线程,提供了很多线程操作需要的类和方法,极大地方便了程序员。而无须使用外部的线程支持库。
Java中的线程模型
在Java中,线程模型就是一个虚拟CPU、程序代码和数据的封装体。代码与数据相互独立。
一个虚拟的CPU
该CPU执行的代码
当两个线程执行同一个类的实例代码时,它们共享相同的代码。
代码所操作的数据
当两个线程对同一个对象进行访问时,它们将共享数据。
每个Java程序都有一个缺省的主线程。
Java应用程序总是从主类的main方法开始执行。
发现main方法之后,就会启动主线程,负责执行main方法。
在main方法的执行中再创建的线程,就称为程序中的其它线程。
如果main方法中没有创建其他的线程,那么当main方法执行完最后一个语句,即main方法返回时,JVM就会结束我们的Java应用程序。
如果main方法中又创建了其他线程,那么JVM就要在主线程和其他线程之间轮流切换,保证每个线程都有机会使用CPU资源,main方法即使执行完最后的语句,JVM也不会结束我们的程序,JVM一直要等到程序中的所有线程都结束之后,才结束我们的Java应用程序。
Java中的线程
public class Example10_1
{ public static void main(String args[])
{ Lefthand left;
Righthand right;
left=new Lefthand() ; //创建线程
right=new Righthand();
();
();
for(int i=1;i<=6;i++)
{ ("我是主线程");
}
}
}
class Lefthand extends Thread
{ public void run()
{ for(int i=1;i<=10;i++)
{
("我是左手线程");
}
}
}
class Righthand extends Thread
{ public void run()
{ for(int i=1;i<=9;i++)
{ ("我是右手线程");
}
}
}