摘要: 传统的生产者消费者问题,防止虚假唤醒 注意点:wait需要被放进while代码块中,防止虚假唤醒 存在虚假唤醒代码: package com.example.juc; public class TestPc { public static void main(String[] args) { A a 阅读全文
posted @ 2021-11-27 18:00 Oh,mydream! 阅读(28) 评论(0) 推荐(0) 编辑
摘要: Lock vs synchronized Synchronzied 和 Lock 的主要区别如下: 存在层面:Syncronized 是Java 中的一个关键字,存在于 JVM 层面,Lock 是 Java 中的一个接口 锁的释放条件:1. 获取锁的线程执行完同步代码后,自动释放;2. 线程发生异常 阅读全文
posted @ 2021-11-27 16:41 Oh,mydream! 阅读(24) 评论(0) 推荐(0) 编辑
摘要: lock锁 三个实现类 可重入锁(普通)ReentrantLock 读锁ReentrantReadWriteLock.ReadLock 写锁ReentrantReadWriteLock.WriteLock fair和unfair 公平锁:严格执行先来后到 非公平锁:可以插队(默认) 默认非公平锁:如 阅读全文
posted @ 2021-11-27 16:19 Oh,mydream! 阅读(81) 评论(0) 推荐(0) 编辑
摘要: OOP思想实践-线程就是一个资源类,没有任何附属操作 不要把Ticket 写成一个Runnable接口的实现,最好用lambda表达式 package com.example.juc; public class SaleTicket { public static void main(String[ 阅读全文
posted @ 2021-11-27 11:23 Oh,mydream! 阅读(32) 评论(0) 推荐(0) 编辑
摘要: OOP七大原则 开闭原则:对扩展开放,对修改关闭 (如果增加模块,需要在原有设计上进行扩展,而不是直接修改) 里氏替换原则:继承必须确保超类所拥有的性质在子类中仍然成立(子类不应重写父类的属性和方法,而应该添加新的方法和属性) 依赖倒置原则:要面向接口编程,不要面向实现编程 (大佬写接口,开发将接口 阅读全文
posted @ 2021-11-27 10:27 Oh,mydream! 阅读(59) 评论(0) 推荐(0) 编辑