![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础
以理论为基础,以代码为证明;开始写博客了...
大庆~
这个作者很懒,什么都没留下…
展开
-
List实现线程安全操作的解决办法
1、Vector类,add方法使用Synchronized修饰2、Collections.synchronizedList(List<T>() list),内部使用同步代码块的方式实现同步,用SynchronizedCollection这个静态内部类作为锁3、CopyOnWriteArrayList,重点说下这个类的add方法//使用了读写分离的思想,写操作的时候,先把原...原创 2020-03-03 15:42:54 · 552 阅读 · 0 评论 -
ArrayList为什么线程不安全?怎么进行扩容?
先来看下它的add方法: /** *其实看了这个代码,就应该知道为啥不安全了,就是这个size++操作,在多线程的情况下,这个操作, *可能会出现值覆盖,什么意思呢?举个例子,比如size初始值为0,这时候两个线程执行size++操作, *在内存中这两个线程首先会从主内存中拿到这个初始值0,然后在自己的工作内存中完成+1操作,当需 *要把这...原创 2020-03-03 13:30:52 · 412 阅读 · 0 评论 -
JDK动态代理
动态代理的关键就是获取代理对象,获取代理对象呢又是根据JDK提供的Proxy这个类提供的方法,这个方法的参数就是需要知道被代理对象的类加载器是哪个?实现的接口是哪些?然后利用InvocationHandler这个类用反射的方式调用被代理对象的方法,代码如下:/** * 声明一个接口 */interface Human { public void study();}/**...原创 2020-02-28 11:54:27 · 114 阅读 · 0 评论 -
静态代理
准备开始好好写博客了,之前一直没有注重这个,吃了不少亏;现在希望能记录下来自己所学到的知识,加深理解,也希望可以帮到其他人,让我们一起共创2020年的美好吧...首先我们知道现在Java编程都是面向接口加实现类的方式,按照之前的写法都是new一个对象就可以开始调了,但是一些特殊的场景由于在代码编译的时候还不能确定下来由哪一个类来调用,因此需要在类动态运行时才能确定下来具体需要执行哪个类的方法,...原创 2020-02-28 11:03:11 · 105 阅读 · 0 评论