线程与多线程处理.ppt

上传人:xin****828 文档编号:15513747 上传时间:2020-08-15 格式:PPT 页数:23 大小:134KB
返回 下载 相关 举报
线程与多线程处理.ppt_第1页
第1页 / 共23页
线程与多线程处理.ppt_第2页
第2页 / 共23页
线程与多线程处理.ppt_第3页
第3页 / 共23页
点击查看更多>>
资源描述
1,上次课程回顾,知识点回顾 描述和使用java.io包的流式思想; 构造文件和过滤器流,并恰当地使用它们; 区别流与读者和作者,并进行合适的选择; 考察并操作文件和目录; 写和更新文本和数据文件;,2,第八章 线程与多线程操作,我如何使我的程序执行多个任务?,3,本节主要内容,线程概述 Java中的线程 程序进程与线程 线程的状态和生命周期 线程的调度和优先级 Java的线程类与Runnable接口 如何在程序中实现多现成 创建Thread类的子类 实现Runnable接口,4,CPU的访问机制(片选机制),打印机,浏览器,声卡,CPU,控制线Control BUS,内存,5,线程概述,以往我们开发的程序大多是单线程的,即一个程序只有从头至尾的一条执行线路。 然而有些程序需要多种途径同时运作,比如:服务器同时处理多个客户机的请求。 多线程指同时存在几个执行体,按几种不同的执行线路共同工作的情况。,6,Java中的线程,程序、进程和线程 程序是一段静态的代码,它是应用程序执行的蓝本。 进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程。作为蓝本的程序可以被多次加载到系统的不同内存区域分别执行,形成不同的进程。 线程是进程内部单一的一个顺序控制流。 一个进程在执行过程中,可以产生多个线程。每个线程也有自己产生、存在和消亡的过程。,7,线程的状态和生命周期,每个Java程序都有一个缺省的主线程,对于Application,主线程是main()方法的执行线索;对于Applet,主线程是指挥浏览器加载并执行Java小程序。 要想实现多线程,就要在主线程中创建新的线程对象。 Java使用Thread类及其子类表示线程。新建的线程在它的一个完成生命周期中通常要经历五种状态。,8,线程的五种状态,新建 就绪 运行 阻塞 死亡,9,线程生命周期示意图,新建,死亡,运行,就绪,阻塞,10,线程的调度与优先级,处在就绪状态下的线程,可能有多个,它们各自的任务轻重缓急有所不同。 Java系统为各种线程制定了一个优先级,优先级较高的现成可以排列在等待队列的前面,先执行。同一优先级的现成,采取先进先出的原则。 这个根据线程优先级调度线程的工作由Java的线程调度管理器自动完成。,11,Java线程类与Runnable接口,Java中编程实现多线程有两种方式: 创建自己的线程子类 在自己的用户类中实现Runnable接口。 两种方法都要使用到Java基础类中的Tread类及其方法。,12,Runnable接口,Runnable接口只有一个方法run(),所有实现Runnabel接口的用户类都必须具体实现这个run()方法,为它书写具体的方法体并定义具体操作。 run()方法比较特殊,它可以被系统自动识别并执行。 多线程应用的实质就是在主线程之外,定义了一个或多个新的线程。,13,Tread类,Tread类综合了Java程序中一个线程所需要拥有的属性和方法,主要有: 构造函数 线程优先级 其他一些主要方法。,14,构造函数,Thread类有多种构造函数,所对应的操作有三种: public Thread():创建一个系统线程类对象; public Thread(Runnable target):在上一个构造函数的基础上,利用参数对象实现了Runnable接口的target对象中所定义的run()方法,来初始化。 Public Thread(String TreadName):在第一个构造函数的基础上,为所创建的线程指定一个名字。 Public Thread(Runnable target,String ThreadName):实现第2、3两种构造函数的功能。,15,线程优先级,Thread类有三个关于优先级的静态常量: MIN_PRIORITY=1 MAX_ PRIORITY=10 NORM_ PRIORITY=5 对应于一个新线程,系统会遵循以下原则: 新线程将继承创建它的父线程的优先级。 一般情况下,线程具有普通优先级。 用户可以通过setPriority()方法来修改优先级。,16,其他主要方法,start()方法:启动线程,使线程有新建状态转为就绪状态; run()方法:定义该线程的操作; sleep()方法:使线程暂时进入到休眠状态。 sleep(int millsecond):以毫秒为单位时间;,17,在程序中实现多线程,无论采取前面描述的哪种途径,程序员可以控制的关键性操作有两个: 定义用户线程的操作,即定义用户线程的run()方法; 在适当的时候建立用户线程实例。 下面我们将就两种途径,分别作探讨:,18,途径一:创建Thread子类,例:(TestThread.java),19,线程的基本控制,终止一个线程 当一个线程结束运行并终止时,它就不能再运行了。 如:r.stop (); 方法用来确定一个线程是否仍是活的。 isAlive() 获取对当前线程的引用 例如:Thread.currentThread().getName()+ completed); 延迟线程 sleep()方法是使线程停止一段时间的方法。,20,途径二:实现Runnable接口,在这个途径中,已经有一个父类可以通过实现Runnable接口的方法来定义用户的操作(既已经实现了run()方法)。 当用户需要建立新线程时,只要以实现了run方法的类为参数创建系统类Thread的对象,就可以把用户实现的run()方法继承过来。,21,例:TestRunnable.java,22,小结,线程概述 Java中的线程 程序进程与线程 线程的状态和生命周期 线程的调度和优先级 Java的线程类与Runnable接口 如何在程序中实现多现成 创建Thread类的子类 实现Runnable接口,23,课后练习,习题一: 创建一个电话卡的类(PhoneCard); 帐号:cardNumber ;初始金额:initMoney 使用时间:time 记费方式:minMoney 创建两个电话卡的子类IP卡和201卡 他们记费方式不同(每分钟费用分别为0.3和0.45); 给定一个时间time=5,和初始金额30,分别计算出剩余金额。 习题二: 复习关于包和接口的概念,参看相关的实例代码。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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