- 博客(4)
- 资源 (4)
- 收藏
- 关注
原创 动态代理以及AOP代理
1.使用Proxy和InvocationHandler创建动态代理 Proxy提供了用于创建动态代理类和代理对象的静态方法,它也是所有动态代理类的父类。如果在程序中为一个或多个接口动态地生成实现类,就可以使用Proxy来创建动态代理类;如果需要为一个或多个接口动态地创建实例,也可以使用Proxy来创建动态代理实例。这里主要讲解创建动态代理实例。 使用Proxy和Invoca...
2018-08-21 16:58:05 168
原创 并发编程之SynchronizedMap和ConcurrentHashMap性能比较
HashMap是线程不安全的,只适用于单线程。因此在并发编程常用其对应的线程安全的类,常用的有Collections工具类的synchronizedMap创建的Map对象,是属于线程安全的;其次就是并发包下的ConcurrentHashMap类。两者由于实现原理稍有不同,因此在读与写的性能上也会有所差异。接下来通过编写测试程序对两者的读写性能分别做比较。 测试类如下: import ...
2018-08-19 21:52:54 9540 2
原创 线程安全版的ArrayList的性能比较--Collections.synchronizedList与CopyOnWriteArrayList
ArrayList是线程不安全的,因此在并发编程时,经常会使用Collections.synchronizedList与CopyOnWriteArrayList来替代ArrayList,接下来对这两种list进行性能的比较。其中Collections.synchronizedLis在更新操作中使用了同步锁,而CopyOnWriteArrayList在更新操作中不仅使用了可重入锁...
2018-08-19 11:25:33 12946
原创 LinkedBlockingQueue源码解析
阻塞队列不仅可以作为容器,更重要的是可以作为线程同步的工具。LinkedBlockingQueue是BlockingQueue接口的实现类。因此LinkedBlockingQueue具有BlockingQueue的特征:当生产者线程试图向LinkedBlockingQueue中放入元素时,如果该队列已满,则该线程被阻塞;当消费者线程试图从LinkedBlockingQueue中取出元...
2018-08-17 16:46:16 190
mybatis关联查询多对多查询案例
2018-02-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人