
Java
xerjava
这个作者很懒,什么都没留下…
展开
-
迭代器实现中的线程安全问题
如果考虑到多线程访问,当一个线程正在迭代某个集合,而另一个线程修改了集合的内容时, 设计方向: 1. 直接抛异常,ConcurrentModificationException; 2. 可正常迭代: a. 不能保证数据一致性;如ConcurrentHashMap,(虽然迭代算法没看懂)迭代过程中有可能包括新更新的数据,有可能存在旧数据; b. 能保证数据一致性: b.1 snapshot;如CopyOnWriteArray,反映的是...原创 2021-07-09 17:06:19 · 1058 阅读 · 0 评论 -
ScheduledThreadPool如何实现定时执行及其它问题概述
一、如何实现定时执行 关键组件:DelayedWorkQueue、ScheduledFutureTask; DelayedWorkQueue Specialized delay queue(延迟队列:是一个无界的BlockingQueue,其中的对象只能在其到期时才能从队列中取走,且队头对象的延迟到期时间最长(heap-based data structure))。 在ScheduledThreadPoolExecutor类中定义,队列中元素类型为ScheduledFutureTask; Sche原创 2021-07-05 16:20:55 · 670 阅读 · 0 评论 -
传送带:AOP原理
静态代理:AspectJ 原理:编译时织入切面代码,生成新增强后的代理类;(写死型) 动态代理:Spring aop 原理:运行时生成新代理类(用后即抛);(动态型) 实现工具:JDK动态代理工具;cglib; 传送带:两篇博客说得很清楚了 https://juejin.im/post/591d8c8ba22b9d00585007dd#heading-9 https://blog....原创 2020-01-17 00:14:37 · 191 阅读 · 0 评论 -
关于fullGC的总结
1. 描述 相对的是youngGC 源于Java堆的内存结构:分代,新生代和老年代 fullGC即在新生代和老年代都进行垃圾回收 2. fullGC的影响 GC过程中导致服务不可用,降低吞吐率 3. 如何降低fullGC带来的影响 fullGC长起来可达到5~6s 从降低fullGC频率和减少fullGC时长的角度,考虑降低其带来的影响 减少fullGC时长 降低fullGC频率...原创 2020-01-09 11:22:38 · 978 阅读 · 0 评论