- 20
- 0
- 约1.98万字
- 约 34页
- 2016-12-13 发布于重庆
- 举报
死锁问题 同步弊端 效率低 如果出现了同步嵌套,就容易产生死锁问题 死锁问题及其代码 是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象 同步代码块的嵌套案例 线程间通信 针对同一个资源的操作有不同种类的线程 举例:卖票有进的,也有出的。 通过设置线程(生产者)和获取线程(消费者)针对同一个学生对象进行操作 线程间通信的代码改进 A:通过等待唤醒机制实现数据依次出现 B:把同步代码块改进为同步方法实现 线程的状态转换图 线程组 Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。 默认情况下,所有的线程都属于主线程组。 public final ThreadGroup getThreadGroup() 我们也可以给线程设置分组 Thread(ThreadGroup?group, Runnable?target, String?name) * 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁, * 为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock。 * * Lock: * void lock(): 获取锁。 * void unlock():释放锁。 * ReentrantLock是Lock的实现类. * 同步的弊端: * A:效率低 * B:容易产生死锁 * * 死锁: * 两个或两个以上的线程在争夺资源的过程中,发生的一种相互等待的现象。 * * 举例: * 中国人,美国人吃饭案例。 * 正常情况: * 中国人:筷子两支 * 美国人:刀和叉 * 现在: * 中国人:筷子1支,刀一把 * 美国人:筷子1支,叉一把\ if (flag) { synchronized (MyLock.objA) {System.out.println(if objA);synchronized (MyLock.objB) {System.out.println(if objB);} } } else { synchronized (MyLock.objB) {System.out.println(else objB);synchronized (MyLock.objA) {System.out.println(else objA);} } } 图解 * 分析: * 资源类:Student * 设置学生数据:SetThread(生产者) * 获取学生数据:GetThread(消费者) * 测试类:StudentDemo * * 问题1:按照思路写代码,发现数据每次都是:null---0 * 原因:我们在每个线程中都创建了新的资源,而我们要求的时候设置和获取线程的资源应该是同一个 * 如何实现呢? * 在外界把这个数据创建出来,通过构造方法传递给其他的类。* 问题2:为了数据的效果好一些,我加入了循环和判断,给出不同的值,这个时候产生了新的问题 * A:同一个数据出现多次 * B:姓名和年龄不匹配 * 原因: * A:同一个数据出现多次 * CPU的一点点时间片的执行权,就足够你执行很多次。 * B:姓名和年龄不匹配 * 线程运行的随机性 * 线程安全问题: * A:是否是多线程环境 是 * B:是否有共享数据 是 * C:是否有多条语句操作共享数据 是 * 解决方案: * 加锁。 * 注意: * A:不同种类的线程都要加锁。 * B:不同种类的线程加的锁必须是同一把。 * 问题3:虽然数据安全了,但是呢,一次一大片不好看,我就想依次的一次一个输出。 * 如何实现呢? * 通过Java提供的等待唤醒机制解决。 * * 等待唤醒: * Object类中提供了三个方法: * wait():等待 * notify():唤醒单个线程 * notifyAll():唤醒所有线程 * 为什么这些方法不定义在Thread类中呢? * 这些方法的调用必须通过锁对象调用,而我们刚才使用的锁对象是任意锁对象。 * 所以,这些方法必须定义在Object类中。 * 线程池的好处:线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。 * * 如何实现线程的代码呢? * A:创建一个线程
您可能关注的文档
最近下载
- 残疾人之家简介课件.pptx
- IPC-7525通用标准(钢网).PDF VIP
- 2025年深圳市创想三维科技股份有限公司招股说明书.pdf VIP
- 达人带货签约合同模板(3篇).docx
- 人教版二年级下册数学全册教学设计(配2026年春改版教材).docx
- 中华人民共和国大气污染防治法(2018修正)实施细则解读.pptx VIP
- 中原工学院《高等数学A》2025-2026学年期末考试试卷(A)卷.docx VIP
- 箱归一化的分析与应用.pdf VIP
- 2026年人教版二年级数学下册 1.5 解决问题(教案).docx VIP
- JTG-T J 21-2011公路桥梁承载能力检测评定规程_(高清-可复制)(高清-可复制).pdf VIP
原创力文档

文档评论(0)