摘要: spring生命周期里调用的方法很多,很难记忆。根据spring方法的命名和相关注释,可以找出生命周期中几个关键节点: 实例化Instantiation,调用构造方法 属性填充set properties,调用set方法 初始化Initialization,执行一些额外的特定需要的初始化 用户自定义 阅读全文
posted @ 2021-05-14 18:58 我吃水煮虾 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 简介 spring ioc的极简实现,可以完成自动属性注入,使用二级缓存解决循环依赖(就是把半成品对象放个map里先保存着),基于注解,可以指定配置文件,总计不到100行代码,可以简单对spring依赖注入有个大致的了解,项目下载链接在文末 大概步骤 最基本的注解 Autowired注解 @Targ 阅读全文
posted @ 2021-05-05 18:04 我吃水煮虾 阅读(114) 评论(0) 推荐(0) 编辑
摘要: #静态代理 public class Main{ public static void main(String[] args) { //被代理对象 B target = new B(); int ans = new C(target).add(4, 5); System.out.println(an 阅读全文
posted @ 2021-05-05 16:05 我吃水煮虾 阅读(47) 评论(0) 推荐(0) 编辑
摘要: LockSupport 和wait,notify区别 wait,notify只能在同步代码中使用,lockSupport没有这个限制。lockSupport可以精准作用于某个线程,而notify只能是随机的某个线程。lockSupport不会产生死锁 中断 和stop的区别 stop是线程实例方法, 阅读全文
posted @ 2021-04-24 20:22 我吃水煮虾 阅读(48) 评论(0) 推荐(0) 编辑
摘要: Atomic 使用锁可以保证原子性,但是带来会上下文切换和线程调度的开销,CAS(compare and swap)是jdk提供的非阻塞操作,通过硬件保证比较-更新的原子性 class A{ AtomicInteger v=new AtomicInteger(); int x; } public c 阅读全文
posted @ 2021-04-16 15:47 我吃水煮虾 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 死锁 死锁产生的条件 互斥:资源同一时间只能被一个线程使用 请求和保持:当前线程已经持有一个资源,同时申请另一个资源 不可剥夺:资源只能被持有的线程自己释放,不能被其他线程释放 循环等待:多个线程等待的资源形成一个环 避免死锁的方法 破坏死锁产生的4个条件之一。 互斥条件:不能破坏,因为本来就是要锁 阅读全文
posted @ 2021-04-10 21:40 我吃水煮虾 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 线程创建方式 继承Thread class MyThread extends Thread{ @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println(this.getName()); try { 阅读全文
posted @ 2021-04-06 18:35 我吃水煮虾 阅读(60) 评论(0) 推荐(0) 编辑