英网站建设,html表白网页制作源码,win7怎么建设网站,wordpress主题古风死锁 概述 死锁是指两个或两个以上的进程在执行过程中#xff0c;由于竞争资源或由于彼此通信而造成的一种阻塞现象。若无外力作用#xff0c;他们将无法进行下去#xff0c;此时称系统处于死锁状态#xff0c;这些永远在互相等待的进程称为死锁进程。 原理 1 某个线程执行…死锁 概述 死锁是指两个或两个以上的进程在执行过程中由于竞争资源或由于彼此通信而造成的一种阻塞现象。若无外力作用他们将无法进行下去此时称系统处于死锁状态这些永远在互相等待的进程称为死锁进程。 原理 1 某个线程执行完成,需要先后 嵌套锁定 两个对象,在这个过程中,先锁定了第一个对象 2 另一个线程执行完成也需要先后嵌套锁定两个对象,在这个过程中,先锁定了第二个对象 3 第一个线程,执行中,要执行到第二个对象的时候,发现被锁定,进入等待状态,等待交出锁 4 第二个线程执行中,要执行到第一个对象的时候,发现被锁定,进入等待状态 5 此时两个线程都在等待对方交出锁,导致死锁 代码实现 单例模式 实现方式 线程通信 概述 Object中的方法 wait让当前线程进入等待状态挂起并释放锁当被唤醒之后从接着挂起的位置继续执行。如果无参数则不会自动醒来需要唤醒。也可以传入Long类型的值代表毫秒数多久之后自动醒来。 notify唤醒一个在该对象中挂起的任意一个线程。 notiAll唤醒在该对象中挂起的所有线程。 wait和sleep的区别 wait:让当前线程进入挂起状态并解锁必须加载在成员方法中。 sleep让当前线程进入睡眠状态是静态方法和是否加锁无关。如果在加锁方法中也不会释放锁。 使用方式 生产者和消费者 概念 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯而通过阻塞队列来进行通讯所以生产者生产完数据之后不用等待消费者处理直接扔给阻塞队列消费者不找生产者要数据而是直接从阻塞队列里取阻塞队列就相当于一个缓冲区平衡了生产者和消费者的处理能力。 这个阻塞队列就是用来给生产者和消费者解耦的。纵观大多数设计模式都会找一个第三者出来进行解耦如工厂模式的第三者是工厂类模板模式的第三者是模板类。在学习一些设计模式的过程中如果先找到这个模式的第三者能帮助我们快速熟悉一个设计模式。 模型 使用方式