Java语言程序设计基础教程课件(第7章)优质PPT.ppt
- 文档编号:15581873
- 上传时间:2022-11-06
- 格式:PPT
- 页数:45
- 大小:155.50KB
Java语言程序设计基础教程课件(第7章)优质PPT.ppt
《Java语言程序设计基础教程课件(第7章)优质PPT.ppt》由会员分享,可在线阅读,更多相关《Java语言程序设计基础教程课件(第7章)优质PPT.ppt(45页珍藏版)》请在冰豆网上搜索。
CPU时间片在多个独时间片在多个独立的线程间切换,从宏观上看,在一个立的线程间切换,从宏观上看,在一个程序运行期间,有多个顺序流同时执行程序运行期间,有多个顺序流同时执行多线程代码和数据共享多线程代码和数据共享代码可以或不可以由多个线程共享。
代码可以或不可以由多个线程共享。
如果两个线程执行同一个类的实例代码,则如果两个线程执行同一个类的实例代码,则如果两个线程执行同一个类的实例代码,则如果两个线程执行同一个类的实例代码,则它们可以共享相同的代码。
它们可以共享相同的代码。
数据可以或不可以由多个线程共享。
如果两个线程共享对一个公共对象的存取,如果两个线程共享对一个公共对象的存取,如果两个线程共享对一个公共对象的存取,如果两个线程共享对一个公共对象的存取,则它们可以共享相同的数据。
则它们可以共享相同的数据。
7.1.2线程的状态线程的状态线程在它的一个完整的生命周期中通常要经历如线程在它的一个完整的生命周期中通常要经历如线程在它的一个完整的生命周期中通常要经历如线程在它的一个完整的生命周期中通常要经历如下的几种状态:
下的几种状态:
1.1.创建创建创建创建(newThread)(newThread)2.2.可运行可运行可运行可运行(RunnableRunnable)3.3.运行运行运行运行(Running)(Running)4.4.阻塞(阻塞(阻塞(阻塞(NotNotRunnableRunnable)5.5.死亡(死亡(死亡(死亡(DeadDead)Start()Run()执行完执行完123定义线程的方法定义线程的方法1.实现实现Runnable接口接口publicclassmythreadimplementsRunnable2.定义定义Thread类的子类类的子类publicclassmythreadextendsThreadpublicvoidrun()publicvoidrun():
是线程运行的主体是线程运行的主体,当当JVMJVM将将CPUCPU使用权切换给线程,使用权切换给线程,启动线程时,启动线程时,runrun方法就立刻执行。
方法就立刻执行。
7.2Thread类的子类创建线程类的子类创建线程编写编写Thread类的子类时,需要重写父类的类的子类时,需要重写父类的run方法,其目的是规定线程的具体操作,方法,其目的是规定线程的具体操作,否则线程就什么也不做,因为父类的否则线程就什么也不做,因为父类的run方法中没有任何操作语句。
方法中没有任何操作语句。
P170例7-27.3实现实现Runnable接口接口用用用用ThreadThread类直接创建线程对象类直接创建线程对象类直接创建线程对象类直接创建线程对象。
使用。
使用ThreadThread类创建线程对象时,常用的构造方法是:
类创建线程对象时,常用的构造方法是:
Thread(RunnableThread(Runnabletarget);
target);
在创建线程对象时,向构造方法的参数传递一在创建线程对象时,向构造方法的参数传递一在创建线程对象时,向构造方法的参数传递一在创建线程对象时,向构造方法的参数传递一个实现个实现个实现个实现RunnableRunnable接口类的实例,该实例对象接口类的实例,该实例对象接口类的实例,该实例对象接口类的实例,该实例对象称为所创线程的称为所创线程的称为所创线程的称为所创线程的目标对象目标对象目标对象目标对象。
P171【例例7-3】通过接口构造线程体通过接口构造线程体publicclassep7_2_2implementsRunnablepublicclassep7_2_2implementsRunnableThreadteacher=newThread(this);
Threadteacher=newThread(this);
Threadstudent=newThread(this);
ComputerSumsum=newComputerSum();
publicep7_2_2()publicep7_2_2()teacher.start();
teacher.start();
student.start();
publicstaticvoidmain(Stringargs)publicstaticvoidmain(Stringargs)newep7_2_2();
newep7_2_2();
publicvoidrun()publicvoidrun()if(Thread.if(Thread.currentThreadcurrentThread()=teacher)()=teacher)Thread.Thread.currentThreadcurrentThread().setName(teacher);
().setName(teacher);
elseelseThread.Thread.currentThreadcurrentThread().setName(student);
().setName(student);
for(inti=1;
i=5;
i+)for(inti=1;
i+)intm=sum.getSum();
intm=sum.getSum();
sum.setSum(m+1);
System.System.outout.println(.println(我是我是我是我是+Thread.Thread.currentThreadcurrentThread().getName()+,().getName()+,现在的和现在的和现在的和现在的和:
+:
+sum.getSum();
sum.getSum();
trytryThread.Thread.sleepsleep(200);
(200);
catch(InterruptedExceptione)catch(InterruptedExceptione)构造线程体的两种方法的比较:
构造线程体的两种方法的比较:
1.使用使用Runnable接口接口1)线程间容易实现共享数据和代码线程间容易实现共享数据和代码2)可以继承于其他类可以继承于其他类;
2.直接继承直接继承Thread类类1)不能再继承其他类(不利于代码升级)不能再继承其他类(不利于代码升级);
2)编写简单,可以直接操纵线程编写简单,可以直接操纵线程两种方式下如何两种方式下如何实现多线程间的实现多线程间的数据共享?
数据共享?
7.4操作线程的常用方法操作线程的常用方法可以通过线程的方法进行基本的线程控制,可以通过线程的方法进行基本的线程控制,常用方法如下:
常用方法如下:
1start()方法方法线程调用该方法将启动线程,从新建状态线程调用该方法将启动线程,从新建状态进入就绪队列排队。
一旦进入就绪队列排队。
一旦CPU资源轮转到资源轮转到它时,就脱离主线程开始自己的生命周期。
它时,就脱离主线程开始自己的生命周期。
2run()方法方法run()run()方法中定义线程对象被调度之后所执行的方法中定义线程对象被调度之后所执行的方法中定义线程对象被调度之后所执行的方法中定义线程对象被调度之后所执行的操作,是系统自动调用而用户不能引用的方法操作,是系统自动调用而用户不能引用的方法操作,是系统自动调用而用户不能引用的方法操作,是系统自动调用而用户不能引用的方法当当当当run()run()方法执行完毕,线程就变成死亡状态方法执行完毕,线程就变成死亡状态方法执行完毕,线程就变成死亡状态方法执行完毕,线程就变成死亡状态在线程没有结束在线程没有结束在线程没有结束在线程没有结束run()run()方法之前,不要让线程再方法之前,不要让线程再方法之前,不要让线程再方法之前,不要让线程再调用调用调用调用start()start()方法,否则将发生方法,否则将发生方法,否则将发生方法,否则将发生IllegalThreadStateExceptionIllegalThreadStateException异常,这一点在异常,这一点在异常,这一点在异常,这一点在写程序的时候需要注意。
写程序的时候需要注意。
3sleep(intmillsecond)方法方法sleep方法可以暂停一个线程的执行,在方法可以暂停一个线程的执行,在适当的时候再恢复其执行。
就是让当前线适当的时候再恢复其执行。
就是让当前线程睡眠(停止执行)若干程睡眠(停止执行)若干毫秒毫秒,线程由运,线程由运行中状态进入不可运行状态,停止执行时行中状态进入不可运行状态,停止执行时间到后线程进入间到后线程进入可运行状态可运行状态。
Sleep()阻塞状态阻塞状态可运行状态可运行状态4isAlive()方法方法获取线程是否处于活动状态;
获取线程是否处于活动状态;
线程由线程由start()方法启动后,直到其被终止之间的任何时刻,方法启动后,直到其被终止之间的任何时刻,都处于都处于Alive状态。
状态。
线程处于新建状态时,调线程处于新建状态时,调用用isAlive()方法返回方法返回false,线程进入死亡状,线程进入死亡状态后,调用态后,调用isAlive()方法返回方法返回false。
5currentThread()方法方法currentThread()方法是方法是Thread类的类方类的类方法,可以直接通过类名调用,该方法返回法,可以直接通过类名调用,该方法返回当前正在使用当前正在使用CPU资源的线程。
资源的线程。
66Interrupt()Interrupt()方法方法方法方法interrupt()interrupt()方法常用来方法常用来方法常用来方法常用来“吵醒吵醒吵醒吵醒”休眠的线程。
但休眠的线程。
但线程调用线程调用线程调用线程调用sleepsleep方法处于休眠状态时,一个占有方法处于休眠状态时,一个占有方法处于休眠状态时,一个占有方法处于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言程序设计 基础教程 课件