- 博客(4)
- 收藏
- 关注
原创 线程池总结
问题 项目中我用线程池实现的一个数据提取功能,在生产环境报OOM,当时也是一头包,在网上乱找原因,现在做一下总结。 分析 核心参数 通过execute()方法源码可看到: public void execute(Runnable command) { if (command == null) throw new NullPointerException(); int c = ctl.get(); if (workerCountOf(c) <.
2021-07-21 22:39:20
106
原创 五分钟弄懂synchronized锁升级过程
五分钟弄懂synchronized锁升级过程 在JDK1.6以前,使用synchronized就只有一种方式即重量级锁,而在JDK1.6以后,引入了偏向锁,轻量级锁,重量级锁,来减少竞争带来的上下文切换。 前菜
2021-07-21 14:39:23
203
原创 LinkedCaseInsensitiveMap
1、发现问题: LinkedCaseInsensitiveMap在put值时候出现顺序问题。 public static void main(String[] args) { LinkedCaseInsensitiveMap<Object> map = new LinkedCaseInsensitiveMap<>(); map.put("aa", 1); map.put("bb", 2); map.put("cc", 3); map.put
2021-07-21 11:49:49
792
原创 Java实现长度可变数组
1、数组:数组是一种数据结构,用来储存同一种类型值得集合,数组一旦被创建就不能改变它的大小。2、既然数组的长度是不可改变的,那么怎么实现长度可变呢?思路:既然数组长度不可变,那么我们可以创建一个长度与原数组不同的新数组,让原数组变量指向新数组,从而实现长度可变(新数组如果没有使用,那么就会被java垃圾回收机制回收销毁,从而不浪费内存空间。)a)直接创建新数组,让原数组变量指向新数组。代码如下:i...
2018-05-13 10:29:58
26237
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人