1. 死锁
概述 :
死锁 : 就是在执行过程中,都遇到了对方进入加锁的方法中,从而导致大家都访问不了的状态
原理 :
1 某一个线程 执行完成 需要 先后 嵌套 锁定 执行两个对象,并且在这个过程中,先锁定第一个对象
2 另一个线程 执行完成 需要 先后 嵌套 锁定 执行两个对象,并且在这个过程中,先锁定第二个对象
3 在第一个线程执行到第二个对象的时候,发现已经被锁定,只能等待
4 在第二个线程执行到第一个对象的时候,发现已经被锁定,只能等待
2. 线程通信
概述 :
wait : 让该线程进入等待状态,会释放持有的锁
无参或者传入0 表示一直等待,不会自动唤醒,只能等着notify唤醒它
也可以传入long类型的值,类似于sleep,时间到了自己唤醒
notify : 随机唤醒一个在该对象中正在等待的一个线程
notifyAll : 唤醒在该对象中所有等待的线程
以上方法只能用在加锁的成员方法中
生产者与消费者 :
3. 单例模式
单例模式 : 让某个类只实例化一个对象
构造方法私有化, 静态变量保存对象,公共的静态方法用于获取类对象
饿汉模式在多线程环境下没有问题,因为不管多少线程 类只能被加载一次,所以只会被初始化一次,也就意味着只能创建一个对象
饿汉模式
懒汉模式