Java2第11章

上传人:da****ge 文档编号:243096081 上传时间:2024-09-15 格式:PPT 页数:17 大小:237KB
返回 下载 相关 举报
Java2第11章_第1页
第1页 / 共17页
Java2第11章_第2页
第2页 / 共17页
Java2第11章_第3页
第3页 / 共17页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,11,章,陈国君,多线程,通过本章的学习,主要掌握以下知识点:,程序、进程、线程、多任务的概念,线程的状态与生命周期,Thread,线程类与,Runnable,接口,本章的重点:,利用,Thread,类的子类来创建线程,用,Runnable,接口来创建线程,本章的难点:,线程的同步机制,11,.1.1,程序、进程、线程、多任务,程序,(,Program):,含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。,进程,(,Process):,程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。,11.1,线程的概念,多任务,(,Multi task):,是指在一个系统中可以同时运行多个程序,即有多个独立运行的任务,每一个任务对应一个进程。,线程,(,Thread) :,也是一个执行中的程序,但线程是一个比进程更小的执行单位。一个进程在其执行过程中可以产生多个线程,形成多条执行线路。,多线程就是同时执行一个以上的线程,一个线程的执行不必等待另一个线程执行完才执行,所有的线程都可能发生在同一时刻。,11.1.2,线程的状态与生命周期,新建线程在它的一个完整的生命周期内通常要经历五种状态。通过线程的控制与调度可使线程在这几种状态间转化,如图,11.1,所示。,新建状态,Newborn,就绪状态,Runnable,运行状态,Running,消亡状态,Dead,其它阻塞,Blocked,start(),图,11.1,线程的生命周期与线程的状态,sleep,时间到,interrupt(),run(),结束,调度,时间片到,yield(),互斥阻塞,Blocked,等待阻塞,Blocked,获得互斥,使用权,sleep(),join(),synchronized(),notify(),wait(),Interrupt(),1,新建状态,(,Newborn),。,2,就绪状态,(,Runnable,),。,3运行状态(,Running),。,4阻塞状态(,Blocked),。,5消亡状态(,Dead),11,.1.3,线程的调度与优先级,调度:指在各个线程之间分配,CPU,资源。,优先级:在多线程系统中,每个线程都 被赋予一个执行优先级。优先级决定了线程被,CPU,执行的优先顺序。,11.2,Java,的,Thread,线程类与,Runnable,接口,Java,中实现多线程的方法有两种,一种是继承,java.,lang,包中的,Thread,类,二是用户在定义自己的类中实现,Runnable,接口。,11.2.1,利用,Thread,类的子类来创建线程,Java,程序语言中的基本类库中已定义了,Thread,这个基本类,内置了一组方法,使程序利用该类提供的方法,去产生一个新的线程、执行一个线程、终止一个线程的工作,或是查看线程的执行状态。,应用见教材例,11.1,。,11.2.2 用,Runnable,接口来创建线程,Runnable,接口是定义在,java.,lang,包中的一个接口,其中只提供了一个抽象方法,run(),的声明。,Runnable,接口只有一个方法,run(),,用户可以声明一个类并实现,Runnable,接口,并定义,run(),方法,将线程代码写入其中,就完成了这一部分的任务。,/,app11_2.java,利用,Runnable,接口来创建线程,class,myThread,implements,Runnable,/,由,Runnable,接口实现,myThread,类,private String who;,public,myThread,(String,str,) /,构造方法,用于设置成员变量,who,who=,str,;,public void run() /,实现,run(),方法,for (,int,i=0;i5;i+),try,Thread.sleep (int)(1000*Math.random();,【例11.2】,利用,Runnable,接口来创建线程,catch (,InterruptedException,e),System.out.,println,(e.,toString,();,System.out.,println,(who+”,正在运行!”,);,public class app11_2,public static void main(String,args,),myThread,you=new,myThread,(“,你”,);,myThread,she=new,myThread,(“,她”,);,Thread t1=new Thread(you); /,产生,Thread,类的对象,t1,Thread t2=new Thread(she); /,产生,Thread,类的对象,t2,t1.start(); /,注意用,t1,激活线程,t2.start(); /,注意用,t2,激活线程,【例11.2】,续,程序运行结果如下:,主方法,main(),运行结束!,你正在运行!,她正在运行!,你正在运行!,你正在运行!,她正在运行!,她正在运行!,你正在运行!,她正在运行!,她正在运行!,你正在运行!,【例11.2】,续,为了解决好线程同步问题,,Java,语言的,Object,类中提供了,wait(),和,notify(),两个方法:,public final void wait(),public final void notify(),线程同步问题的应用见教材,【例11.4】,11.3,线程的同步机制,再见,!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!