




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第11章使用线程11.1线程基本概念11.2线程11.3同步和共享11.4线程之间的通信11.5线程挂起和唤醒11.6多线程问题11.7总结2、11.1线程概念、进程、线程映像、3、11.1 输入输出装置、各种系统资源、数据段、只在一个位置运行,文件、输入输出装置、各种系统资源、程序段,同时在几个位置运行、传统进程、多线程任务、4、4、 11.1线程的基本概念,多线程的优点:1 )减少写交互式频繁程序的困难.2)改善程序吞吐量.3)能够同时执行具有多个处理器的系统不同线程(否则, 5、5、5,11.1线程的基本概念,线程和过程的差异:1 )多个过程的内部数据和状态可以完全独立,多线程可以与一个存储空间共享一组系统资源,并且可以相互影响。 2 )线程本身的数据通常只是寄存器数据,是一个程序执行时使用的堆栈,因此线程的切换比进程切换的负担小。 6、6、6,11.1线程的基本概念、对线程的综合支持是Java技术的重要特征。 Java内在地支持多线程,所有类都由多线程思想定义。 可以认为Java的线程是由虚拟CPU、代码和数据三部分构成的。 1 )虚拟CPU被封装在java.lang.Thread类中。 2 )虚拟CPU执行的代码、传递给Thread的类3 )虚拟CPU处理的数据、传递给Thread的类Macintosh、WindowsNT、Windows9等操作系统支持多线程。 在c和c中创建多线程程序是困难的,因为数据同步支持不足,所以使用7、7和11.2线程11.2.1线程主体线程的所有活动都由线程的run ()方法实现,以建立并初始化一个线程线程的执行起点从run ()方法开始,就像应用程序从main ()方法开始一样。 run方法是执行线程的主体,在启动线程时直接从java调用公共void run (),使用8、11.2线程,11.2.2线程主体的结构1 .线程类threaddpublicclasslessthandsthrr 2 .通过接口构建线程主体构建实现Runnable接口的对象,并将其作为目标构建线程主体。 9,11.2线程的使用情况,11.2.3线程的状态表示在线程的每个生命周期中线程始终处于正在进行的活动和任务1 )的创建状态,当一个线程处于正在创建状态时2 )当线程处于可执行状态时,系统为该线程分配了所需资源。 3 )当处于正在运行状态并且处于该状态时,系统将向该线程分配所需的资源,并且该线程占用CPU。 4 )不可执行状态,也称为阻塞状态,系统因某种原因无法执行线程。 5 )死亡状态、线程的执行结束是自然取消还是停止。 自然的取消从线程正常结束,停止的是应用程序的停止。 当线程执行所有语句时,它会自动关闭,也可以调用线程的stop ()方法强制关闭线程。使用10、11.2线程、11.2.3线程状态、11、11.2.3线程状态、线程状态和状态转换映像、使用12、11.2线程、11.2.4线程调度线程优先级在某个时间点仅运行一个线程的调度固定优先级调度. news thread.set priority (thread.min _ priority )级别为: min-priority norm _ priority max-priority自私线程:具有高优先级使用13,11.2线程,11.2.5线程控制1线程newthread=newThread(this ),不授予处理器控制权; newthread.start (); /在启动线程2无法运行的情况下停止线程,小应用程序的stop调用线程的stopnewthread.stop ()调用sleep方法角色,暂停线程运行,给其他线程带来机会,使sleep失败为了等待条件变量,线程必须调用wait ()方法,并且必须调用notify()ornotifyall ()方法才能停止等待。 在I/o流中发生线程阻塞的三个停止线程停止时会导致死亡,自然撤消和停止,使用14,11.2.6线程,如何调度11.2.6线程sleep():当前线程睡眠数毫秒,从运行状态进入不可执行状态yield():会暂停执行目前的执行绪,并允许执行其他执行绪。 线程处于可执行状态。 isAlive():在线程当前正在运行的状态下生成if (new thread.is alive () ) new thread.stop () : resume():将suspend():挂起到挂起的线程的执行join():等待调用该方法的线程完成thatThread.join () 当前线程将要由. yield:执行的权限传递给其他线程,并且在它到达队列后等待. Wait():实现用于线程间通信的同步控制方法。 具体见教材第264页。 使用15、11.2.7线程,以及其他关于11.2.7线程的概念是什么daemon (守护进程)? 在客户机/服务器模式中,服务器角色通常等待来自用户的请求并且客户机中的工作守护程序线程按照请求向其他线程提供服务的线程守护程序线程应当是独立线程,而run ()方法是无限循环的。 守护进程线程与其他线程之间的区别在于,如果守护进程线程是唯一正在运行的线程,则该程序将自动终止,并且使用16,11.2线程11.2.7线程的其他概念、客户端、服务器端、请求、守护进程、17,11.3同步18、11.3同步和共享,确保对共享对象访问必须同步的任何时候只能访问该对象.在Java语言中,可以通过监视器(MonitorModel )模型进行线程同步. 当线程1进入withdrawal方法时,获取监视器(锁定) .当线程1的方法执行完成后,释放(解锁)监视器并解锁线程2的19,11.3同步共享,由synchronized识别的区域和方法成为监视器监视的部分。如果一个类或对象具有监视器,并且程序具有两个使用已同步标志的方法,则它们将在监视器管理下与. 20,11.3同步共享,例如:如果两个线程在同步限制下运行. class saccount stant staticsintexpense=0; publicsynchronizedvoidwithdrawl (int amount ) if (amount=balance ) balance-=amount; expense=amount; else system.out.println ( bounded : amount ); 与21,11.3同步共享,2 .等待同步数据的潜在问题:如果消费者比消费者快,则消费者不能获得比消费者快的数据。notify ()和wait ()方法用于协调读取关系。notify ()和wait () 只能从同步方法调用. 22与11.3同步共享. Notify ()的角色是调用等待同一监视器的线程. wait的角色是当前线程在read ()方法读取信息之前等待,直到读取信息为止, 读完后通知写入线程. write ()方法在写入信息之前等待,写完后通知读取过程,直到信息被删除为止.例如: DemoWait.class, 23 11.3同步和共享,classwaitnotificationydemo publicstaticvoiddmain (string args ) 消息主板m=新消息主板() : readerreadfrom _ m=new reader (m ) writer write to _ m=new writer (m ) readfrom _ m.start () writeto_m.start (); 、24、11.3同步和共享、class消息板上的私有消息; privatebooleanready=false; /(信号) publicsynchronizedstringread () while (ready=false ) try wait () : catch (interruptedexceptione ) -读取=假; notify (); /写入开始状态后读return message publicsynchronizedsvoidwrite (strings ) while (ready=true ) try wait () : catch (interruptedexceptione ) -消息=s; ready=true; notify ();25、11.3同步和共享、classsreaderextenstesthread privateemessageboardmboard; 公共读取器(消息板m ) mboard=m; strings= 公共void vun () ; 布尔读取=true; while (读取) s=mboard.read () : system.out.println ( reader read : s ); if (s.equals ( log off ) ) reading=false; system.out.println ( finished :10 seconds
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药品标准分类讲解
- 膝关节骨性关节炎阶梯治疗
- 物理治疗磁疗技术研究与应用
- 细胞的渗透实验
- 桡动脉穿刺技术
- 细胞仪器技术解析
- 福建省福州三校联盟2026届化学高一第一学期期末学业水平测试试题含解析
- 汽水条形码体系解析
- 苏绣教学讲解课件
- 现代安全防范技术
- 中国石油独山子石化分公司32万吨-年苯乙烯装置扩能改造项目环评报告
- 英语教师遴选试题及答案
- 兵团两委考试试题及答案
- JG/T 2-2018钢制板型散热器
- 种植牙和解协议书
- 《大脑中动脉解剖结构》课件
- z08小升初数学试卷及答案
- 2025-2030焦炭行业市场深度调研及发展规划与投资前景研究报告
- 建筑工程安全文明标准化示范工地管理办法
- 药品不良反应的临床应对措施考试试题及答案
- 鼻饲的注意事项及护理要点
评论
0/150
提交评论