![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础知识
文章平均质量分 67
Fizz爱学习
男人嘛, 要温柔
展开
-
Spring循环依赖问题学习笔记第一版
什么是循环依赖? Spring的循环依赖又是什么?例如: 比如说对象A的创建需要对象B, 对象B的创建需要对象A以spring为例public class A { private B b; public void setB(B b) { this.b = b; }}public class B { private A a; public void setA(A a) { this.a = a; }}&l原创 2021-05-09 23:56:25 · 87 阅读 · 0 评论 -
如何控制某个方法允许并发访问线程的个数
今天刚刚学习了Semaphore, 也就是我们说的信号量机制,用来控制某种资源的操作数量, Semaphore中管理着一组虚拟的许可, 可是通过构造函数初始化, 执行操作时首先要通过acquire方法申请许可, 如果没有则会阻塞(直到中断或者超时), release()方法释放虚拟许可. tryAcquire()方法中如果获取许可失败, 则立马返回, 不会阻塞.场景:虚拟许可为1时, 可用于资源的互斥操作用于资源池的实现碰到这个问题, 刚好来练习一下package concurrent.offer原创 2021-04-27 21:48:18 · 316 阅读 · 1 评论 -
java动态代理产生死循环问题排查和源码分析
问题复现最近在学习jdk的动态代理, 自己写了一个Demo后, 发现程序陷入了递归, 通过分析源码后, 成功定位并解决了问题, 也加深了自己对动态代理的理解.代码书写动态代理的一般步骤定义接口, 如下面代码的Task接口,确定将要被代理的方法书写实现类Task, 实现这个接口, 实现类为RealTask实现InvocationHandler接口. 注意这个实现类要以被代理类为的数据成员, 并利用构造函数初始化它.调用Proxy.newInstance方法获得动态代理类, 第一个参数为接口的类原创 2021-04-02 23:21:12 · 517 阅读 · 0 评论