- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十一章多线程 线程的概念 线程的实现机制 Thread类 线程之间的数据交流 线程的状态 线程优先级 线程同步与调度 线程组 几个概念 程序:为完成特定任务、用某种语言编写的一组指令的集合,指一段静态的代码。 进程:程序的一次执行过程,是系统进行调度和资源分配的一个独立单位。一个进程在其执行过程中可以产生多个线程,形成多条执行线索。 线程:比进程更小一级的执行单元。 每个线程有自身的产生、存在和消亡的过程,有自己的入口、出口以及一个顺序执行的序列。 线程不能独立存在,必须存在于进程中,各线程间 共享进程空间的数据。 线程创建、销毁和切换的负荷远小于进程,又称为轻量级进程(lightweight process),系统负担小,主要是CPU的分配。 线程 例 总体结构如下: public class MyThread extends Thread { public void run() { … … } } MyThread t = new MyThread(); t. start(); 例: TwoThreadsTest.java 例 创建的总体框架如下: class A implements Runnable{ public void run(){….} } class B { public static void main(String[] arg){ Runnable a=new A(); Thread t=new Thread(a); t.start(); } } 例:ThreadTest、PoliceThief 总结 两种方法均需执行线程的start()方法为线程分配必须的系统资源、调度线程运行并执行线程的run()方法。 在具体应用中,采用哪种方法来构造线程体要视情况而定。采用继承Thread类方法的优点是程序代码更简单。而实现Runnable接口的优势是符合OO设计的思想和便于用extends继承其它类。通常,当一个线程已继承了另一个类时,就应该用第二种方法来构造,即实现Runnable接口。 线程的消亡不能通过调用一个stop()命令,而是让run()方法自然结束。 线程的优先级 线程的调度策略 线程调度器选择优先级最高的线程运行。但是,如果发生以下情况,就会终止线程的运行。 线程体中调用了yield()方法,让出了对CPU的占用权。 线程体中调用了sleep()方法, 使线程进入睡眠状态。 线程由于I/O操作而受阻塞。 另一个更高优先级的线程出现。 在支持时间片的系统中,该线程的时间片用完。 多线程的同步 为什么要引入同步机制? 在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源。必须对这种潜在资源冲突进行预防。 解决方法:在线程使用一个资源时为其加锁。访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁。 怎样实现同步 例 警察抓小偷问题 ThredSync 同步的线程状态图: 通过wait…notify调度 wait…notify调度过程是几个线程对同一对象进行操作,其中某些线程在一定条件下自动挂起(wait),等待其他线程在一定条件下通知(notify)其继续运行。 wait()和notify()方法是Java中每个对象都有的方法,当一个线程执行到对象O的wait()方法时,Java虚拟机会自动挂起,进入该对象的wait等待池等待。当其他线程执行到对象O的notify()方法时,Java虚拟机会从对象O的wait池中随机取出一个线程放入O的等锁池中,一旦O的标记被其他线程返回,即可运行。 多线程的同步 怎样实现同步 具有wait()和notify()的线程状态图: 例 警察抓小偷问题,Waitn2.java 生产者和消费者问题,ProdCons.java 线程组 所有线程都隶属于一个线程组,既可以是一个默认线程组,亦可是一个创建线程时明确指定的组。 说明: 在创建之初,线程被限制到一个组里,而且不能改变到一个不同的组。 若创建多个线程而不指定一个组,它们就会与创建它的线程属于同一个组。 如果想保护某些资源不被多个线程同时访问,可以强制通过synchronized方法访问那些资源。例如: synchronized void f() { /* ... */ } synchronized void g() { /* ... */ } 调用synchronized方法时,对象会被锁定。当synchronized方法执行完或发生异常时,会自动释放锁。被synchronized保护的数据应该是私有
您可能关注的文档
- 24保险公司新人30天之展业用语培训10储蓄与客户需求.ppt
- iphone4S自定义铃声设定.doc
- 第二课第2讲离子反应.pptx
- 2009年度广东肇庆市初中毕业生学业考试数学考试题.doc
- 国际海洋法教材.pptx
- 北大青鸟ACCP5-0JavaScript客户端验证和页面特效绘制2.ppt
- 第2课集散系统基础知识2-1体系2-2硬件.ppt
- 2014年度专八人文知识真题.ppt
- 国际货物运输代理第十课.ppt
- 国际间劳动力活动动因分析.ppt
- 2025年烟台市正大城市建设发展有限公司招聘工作人员12名笔试参考题库附带答案详解.doc
- 2025年衢州市属国企公开招聘工作人员笔试参考题库附带答案详解.doc
- 2025中铁四局集团有限公司法律合规部公开招聘1人笔试参考题库附带答案详解.docx
- 2025中国建筑股份有限公司岗位招聘【人力资源部(干部人事部)】笔试参考题库附带答案详解.docx
- 2025年滁州定远县中盐东兴盐化股份有限公司招聘2人笔试参考题库附带答案详解.doc
- DB1331T109-2025雄安新区建设工程抗震设防标准(963.84KB)(1).pdf
- 2025辽宁省能源控股集团所属抚矿集团招聘76人笔试参考题库附带答案详解.pdf
- 2024陕西延长石油集团华特新材料股份有限公司社会招聘8人笔试参考题库附带答案详解.pdf
- 2023内蒙古大唐国际锡林浩特矿业有限公司采煤自营专项社会招聘32人笔试参考题库附带答案详解.pdf
- 2024年12月云南大学国际合作与交流处公开招聘(1人)笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
最近下载
- 注册安全工程师中级其他安全生产专业实务(其他安全类案例)模拟试卷5.pdf VIP
- 2025低压分布式光伏入网技术规范.docx VIP
- GB生产设备安全卫生设计总则.doc VIP
- 产教融合、校企合作——黄淮学院的探索与实践.ppt VIP
- 注册安全工程师中级其他安全生产专业实务(其他安全类案例)模拟试卷9.pdf VIP
- 《呼吸防护用品 自吸过滤式防颗粒物呼吸器》GB 2626-2019-2020.7.1.docx VIP
- 危险货物包装标志.docx VIP
- 地下水质量标准GB148482017.docx VIP
- 《心理学史教学大纲.doc VIP
- GBT-用于校准表面污染监测仪的参考源 α、β和光子发射体及编制说明.pdf VIP
文档评论(0)