已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章线程 主要内容 线程概念线程的生命周期线程的创建线程的常用方法 程序 进程与线程程序是一段静态的代码 它表现为磁盘上的一个文件 进程是程序的一次动态执行过程 进程包括代码以及系统为了执行它而分配给它的一系列资源 线程是比进程更小的执行单位 一个进程在其执行过程中 可以产生多个线程 每个线程也有它自身的产生 存在和消亡的过程 也是一个动态的概念 多线程 以往我们写的程序都是单线程的 对于多线程这个概念 你目前了解了多少 Java线程 JVM main threadn thread2 thread1 JVM加载代码时 发现main方法后 就启动一个线程 叫主线程 该线程负责执行主方法 主方法里可以再建立其它的线程 当所有线程都执行结束后 才结束该应用程序 主线程 JavaThread Java中 每个线程都是java lang Thread的对象 由Thread类来完成线程调度的细节以及控制线程的各个方法 创建JavaThread 创建一个具有线程功能的线程类可以通过以下两种方式 继承java lang Thread实现java lang Runnable通常 第二种方式要好 因为你还可以继承其它的父类 创建JavaThread 将希望被线程执行的代码写到新类的run 方法里 Thread类里有run 方法 继承这个类需要覆盖这个方法 希望被线程执行的代码要写到这里Runnable接口也有这个方法 实现这个接口需要实现这个抽象方法 而这个方法最终会被Thread类在某个时刻调用 创建JavaThread Thread类的构造函数可以接受以下以下参数的多种组合ARunnableobject它的run方法会被Thread类执行AThreadGroupobject决定将要创建的线程对象属于哪个线程组Anameforthethread aString 线程对象的名字 启动和终止Thread start 通过调用Thread类的start方法来启动一个线程 start方法内部会调用run方法 或是thread类的run方法 或是Runnable接口中的方法 线程会在run方法返回或是发生异常的情况下终止 线程的例子 线程的几种主要状态新创建状态 可运行状态 死亡状态 new runnable dead 线程的常用方法 1 start 线程从新建状态进入就绪队列排队 一旦轮到它来享用CPU资源时 就可以脱离创建它的主线程独立开始自己的生命周期了 2 run thread类的run 方法与Runnable接口中的run 方法的功能和作用相同 都用来定义线程对象被调度之后所执行的操作 都是系统自动调用而用户程序不得引用的方法 在线程没有结束run 方法之前 不赞成让线程再调用start 方法 否则将发生ILLegalThreadStateException异常 3 sleep intmillsecond 线程的调度执行是按照其优先级的高低顺序进行的 当高级线程未死亡时 低级线程没有机会获得处理器 有时 优先级高的线程需要暂时放弃处理器 让优先级低的线程有机会执行 为达到这个目的 优先级高的线程可以在它的run 方法中调用sleep方法来使自己放弃处理器资源 休眠一段时间 休眠时间的长短由sleep方法的参数决定 如果线程在休眠时被打断 JVM就抛出InterruptedException异常 因此 必须在try catch语句块中调用sleep方法 4 isAlive 检查线程是否处于运行状态的方法 在线程的run方法结束之前调用isAlive 方法返回true 当线程进入死亡状态后 实体内存被释放 调用方法isAlive 这时返回的值是false 需要注意 一个已经运行的线程在没有进入死亡状态时 不要再给线程分配实体 由于线程只能引用最后分配的实体 先前的实体就会成为 垃圾 并且不会被垃圾收集机收集掉 5 currentThread currentThread Thread类中的类方法 该方法返回当前正在使用CPU资源的线程 6 interrupt intertupt方法经常用来 吵醒 休眠的线程 当一些线程调用sleep方法处于休眠状态时 一个使用CPU资源的其它线程在执行过程中 可以让休眠的线程分别调用interrupt方法 吵醒 自己 即导致休眠的线程发生InterruptedException异常 从而结束休眠 重新排队等待CPU资源 Thread类setName 可以为线程起名字getName 返回线程的名字 线程的优先级与调度管理 Java虚拟机 JVM 中的线程调度器负责管理线程 调度器把线程的优先级分为10个级别 Thread MINPRIORITY1Thread MAX PRIORITY10Thread NORM PRIORITY5如果没有明确地设置线程的优先级别 线程的优先级为常数5 setPriority intgrade 调整线程优先级getPriority 返回线程的优先级需要注意是 有些操作系统只能识别3个级别 1 5 10 线程的生命周期 线程在它的一个完整的生命周期中通常要经历4种状态 new此时的线对象仅仅是普通的对象Runnable 可运行状态 系统为线程分配了它运行所需要的资源 它或者在就绪队列里等待执行 或者正在执行 中断 有4种原因的中断 JVM将CPU资源从当前线程切换给其他线程 使本线程让出CPU的使用权处于中断状态 线程执行了Thread sleep intmillsecond 方法 使当前线程进入休眠状态 线程一旦执行了sleep intmillsecond 方法 就立刻让出CPU的使用权 使当前线程处于中断状态 经过参数millsecond指定的豪秒数之后 该线程就重新进到线程队列中排队等待CPU资源 以便从中断处继续运行 线程需要访问的某些资源不可用 调用了wait方法进行等待 必须由其他线程调用notify 方法通知它 使得它重新进到线程队列中排队等待CPU资源 以便从中断处继续运行 线程执行读 写操作等引起阻塞 进入阻塞状态 进入阻塞状态时线程不能进入排队队列 只有当引起阻塞的原因消除时 线程才重新进到线程队列中排队等待CPU资源 以便从原来中断处开始继续运行 Dead线程运行结束或异常返回 所谓死亡状态就是线程释放了实体 即释放分配给线程对象的内存 创建一个新线程例ThreadDemo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工标志牌合同范本
- 旅行免责协议书范本
- 结构工程师设计辅助培训试题及答案
- 2026-2031年中国农产品物流行业市场全景调研与竞争格局研究报告
- 柜体定制意向合同范本
- 五金供货合同协议书
- 基于构式语法的英语句子论元结构深度解析
- 基于条件Copula模型剖析股票市场间危机传染效应
- 2026-2031年中国数控机床市场竞争现状分析与投资商机研究报告
- 上海市浦东新区2025-2026学年九年级(上)期中化学试卷(含答案)
- 主题班会AI时代中学生的机遇与成长
- 电子版申请书怎么弄
- 2025年工伤事故赔偿标准协议书
- 北京城的历史沿革
- 2025-2031年中国动压油膜滑动轴承行业市场深度研究及投资策略研究报告
- DB32T 4116-2021 里氏硬度计法建筑结构钢抗拉强度现场检测技术规程
- 电子特气行业报告:中国电子特气
- 客服的英文(多篇)
- 员工人事档案
- 《计算机网络》00805国家开放大学期末考试复习题库
- 实验室安全准入考试题库答案
评论
0/150
提交评论