第十二篇 线程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 线 程 Java核心技术 第十二章 线程 ontents 1 线程基础 2 线程的状态 3 线程同步 4 线程死锁 5 线程通信 6 本章案例 Java核心技术 一、线程基础 ontents 1、程序 2、进程 3、线程 程序是计算机指令的集合或者说一组指令序列,它以文件的形式存储在磁盘上。 进程是一个程序在自身的地址空间中的一次执行活动,也可以说进程是运行中的程序。 线程是进程中的一个单一的执行流程。 线程的基本概念 Java核心技术 一、线程基础 ontents 虚拟的CPU:由java.lang.Thread封装和模拟; Code:CPU要处理的代码,传递给Thread对象; Data:CPU要处理的数据,传递给Thread对象。 线程的概念模型(三要素) Java核心技术 一、线程基础 ontents 1、创建线程方式: 1)直接继承java.lang.Thread类 2)实现java.lang.Runnable接口 2、创建线程方式的比较: 实现Runnable接口: 1)实现接口的同时继承一个其他的Java类; 2)将CPU、代码和数据分开,实现数据共享。 继承Thread类: 编写简单。 线程的创建 Java核心技术 二、线程的状态 ontents 线程状态转换图 notify()/notifyAll()/interupt() wait() Lock available Synchronized Scheduler 执行yield() main()/run() 方法执行结束 调用sleep()/调用join()/IO操作 sleep()结束/等待线程执行完成/IO操作结束/线程调用interupt() start() New Runnable Running Blocked in Object’s wait() pool Blocked in Object’s lock pool Dead Otherwise Blocked Java核心技术 二、线程的状态 ontents 1)线程的优先级:setPriority和getPriority,设置和获取线程的优先级; 2)线程的串行化:join方法,如果线程A调用了线程B的join方法,那么直到线程B执行完成后,线程A才能执行;实际应用广泛,多用无参方法;? 3)线程休眠:sleep方法,调用了sleep方法的线程在休眠的同时不释放自己占有的资源;? 4)线程让步:yield方法使用,线程让步给其他线程进行执行,使用该方法后线程并不进入阻塞状态而直接进入就绪状态; 5)线程停止:stop方法(不推荐),通过标识变量等价实现。 线程状态转换的方法 Java核心技术 三、线程同步 ontents 1、同一时刻只允许一个线程访问的资源,称为临界资源;处理临界资源的代码称为临界区; 2、在java中为了保证共享数据操作的完整性,引入了互斥锁的概念;java中每一个对象都有一个互斥锁,一旦加上锁之后,保证了同一时刻只能有一个线程访问该对象所保护的临界区; 线程同步机制 synchronized关键字 1、使用关键字synchronied实现给对象加锁; 2、synchronized可以修饰方法也可以修饰代码块,用synchronized修饰的方法称为同步方法,用synchronized修饰的代码块称为代码块。 Java核心技术 四、线程死锁 ontents 并发运行的多个线程彼此等待对方占有的资源,都无法运行的状态称为死锁。产生死锁的原因主要是:系统资源不足、进程运行推进的顺序不合适、资源分配不当等。例如:线程1获得了对象A的锁,等待对象B的锁,线程2获得了对象B的锁,等待对象A的锁,就造成了死锁。 死锁的概念 死锁实例 Java核心技术 五、线程通信 ontents 1)wait方法:在同步代码中执行,调用该方法的线程将暂停执行进入对象的等待队列,并释放对象的锁;直到有其他线程在锁定同一对象的同步代码中执行notify方法或者notifyAll方法; 2)notify方法:在同步块中执行,唤醒锁定对象的等待队列中的一个线程; 3)notifyAll方法:在同步块中执行,唤醒锁定对象的等待队列中的所有线程。 wait()、notify()、notifyAll()方法 生产者消费者案例 Java核心技术 六、综合案例 ontents 1、运行程序Login.java,程序进入登录界面如下图所示。 Java核心技术 六、综合案例 ontents 2、在上图中输入用户名、密码后单击“登录”按钮,程序将验证用户名和密码是否为空,如果不能

文档评论(0)

0520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档