- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目标 线程 -1 多线程:在一个程序中同时运行多个任务 多进程:在操作系统中能同时运行多个任务(程序) 线程和进程的区别: 进程是运行中的应用程序,拥有自己独立的内存空间和资源 一个进程可以有一个或多个线程组成,且至少有一个线程称为主线程 线程是最小的处理单位,多个线程共享一块内存和资源 当一个线程改变了所属进程的变量时,其它线程下次访问该变量时得到这种改变 线程-2 线程的优点: 充分利用CPU资源 简化编程模型 简化异步事件处理 使GUI更有效率 节约成本 线程-3 线程模型: Thread类 Runnable接口 Thread和Runnable区别: Thread是类,具有线程的所有方法,其对象就是一个线程对象。但继承Thread,就不能再继承其他的类(Java只支持单一继承)。 Runnable是接口,只提供run()方法,实现该接口的类还可以继承其他类,但其对象不是线程对象,不能直接运行,必须通过Thread将其启动。 线程使用 创建线程-1 创建线程-2 Thread的方法: 创建线程-3 Runnable接口:Runnable接口由单个方法run()组成,它在线程激活时执行。 通过Runnable接口创建线程的步骤如下: 1)实例化实现Runnable接口的类 2)建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法 3)通过Thread类的start()方法建立线程。 实现Runnable接口的语法: 线程状态 线程状态: born:新线程状态 runnable、running:就绪、运行状态 blocked:阻塞状态 sleeping:休眠状态 waiting:等待状态 dead:死亡状态 线程的状态和状态之间的转换 : 线程优先级 线程的优先级代表该线程的重要程度,当有多个线程同时处于可执行状态并等待获得CPU时间时,线程调度系统根据各个线程的优先级来决定CPU分配时间,优先级高的线程有更大的机会获得CPU时间。 线程的默认优先级值:Thread.NORM_PRIORITY,值为5 每个新线程均继承创建线程的优先级。 setPriority()设置线程优先级,值为MIN_PRIORITY(1)和MAX_PRIORITY(10)之间的值。 getPriority() 获取线程的优先级值。 线程组 线程组可对其所有线程同时进行操作,比如通过调用线程组的相应方法来设置其中所有线程的优先级,也可以启动或阻塞其中的所有线程。 线程组的常用方法: 多线程 就是在一个程序中实现多任务处理,即在主线程中有多个线程在运行,多个线程的执行是并发的。 多线程,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度、同步等问题 。 线程同步 线程同步:保证某个资源在某一时刻只能由一个线程访问,以此保证共享数据及操作的完整性。 同步的关键字synchronized 可以使用synchronized关键字修饰同步方法或同步块 同步方法语法: 同步块语法: 线程通信 线程通信的方法:wait()、notify()和notifyAll() 调用wait()方法可以让线程等待,并释放对象锁,直到interrupt()方法中断它或者另一个线程调用notify()或notifyAll()通知它。wait()方法也可以带一个参数,用于指明等待的时间,使用此种方式不需要notify()或notifyAll()的唤醒。此方法只能在一个同步方法中调用。 调用notify()方法时可以随机选择一个在该对象调用wait()方法的线程,解除它的阻塞。 调用notifyAll()方法可以唤醒等待该对象的所有线程。但唤醒时无法控制唤醒哪个线程,唤醒过程完全由系统来控制。 notify()方法和notifyAll()方法只能在同步方法或同步块内部使用。 死锁 死锁,是指两个或多个线程都在等待对方释放对象资源而进入的一种不可“调节”的状态。 常见的死锁模式是:当线程A拥有obj1上的对象锁,为完成任务同时需要获取obj2上的对象锁,而此时线程B正拥有obj2的对象锁,其为完成任务需要获取obj1上的对象锁。此时两个线程在对象资源上即无法获取(对方线程未执行完毕)也无法释放(自身线程未执行完毕),程序进入无限期的等待,死锁就发生了。 小结 第一章 线程 理解线程的基本概念 理解Java的线程模型 掌握Java线程的状态和状态转换 掌握线程的创建和使用 掌握线程优先级的使用 掌握线程组的使用 理解多线程的概念 掌握Java的多线程实现 掌握线程的同步技巧 掌握线程的通信方式 理解死锁的概念 线程(Thread)是
您可能关注的文档
最近下载
- 2025内蒙古孪井滩生态移民示范区社区专职工作者招聘10人考试备考试题及答案解析.docx VIP
- 金属粉末冶金材料.PPT VIP
- 新苏教版三年级上册数学(全册)同步随堂练习一课一练 .pdf VIP
- 《电工基本技能》教案项目五任务二 开关类低压电器的拆装.docx VIP
- 危险源辨识、风险评价表(建筑工程).xls VIP
- 连翘的育苗技术.pptx
- 第16课《诫子书》(教师版).docx VIP
- 跨部门合作流程与沟通模板.doc VIP
- SANKEN三肯变频器samco-ns TEXC-NS-002(小容量)使用手册调试说明书.pdf
- 《电工基本技能》教案项目五任务三 接触器的拆装.docx VIP
原创力文档


文档评论(0)