java
文章平均质量分 53
电脑桌上的钢琴师
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java解析tif文件 | 获取最大最小坐标 | java判断点是否在tif平面内
java解析tif原创 2024-01-19 10:57:11 · 942 阅读 · 0 评论 -
java对象分配过程
jvm对象分配过程new Object()占用多少空间survivor满了原创 2023-04-13 15:59:43 · 257 阅读 · 0 评论 -
CAS 自旋锁 轻量级锁
compareAndSet / Compare and Swap三个参数(内存值V,旧的预期值A,要修改的新值B){}CAS有3个操作数,内存值V(当前值),旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。两个好处1.无锁的方式没有锁竞争带来的系统开销,也没有不同线程间频繁调度的开销,所以性能比锁更优越2.对死锁免疫ABA问题:当你获得对象当前数据后,在准备修改为新值前,对象的值被其他线程连续修改了两次,而经过两次修改后,对象的值又恢复为旧值,原创 2022-02-24 00:01:29 · 369 阅读 · 0 评论 -
java的类加载,双亲委派
classloader loadclass 双亲委派源码原创 2022-01-19 11:56:59 · 241 阅读 · 0 评论 -
线程创建几个?jar内存多大
**线程数量多少合适cpu密集的话,单核1个,理论上单线程就可以了, 多核的话, 一般就是N 或者N+1 因为要考虑到线程的切换io密集的话,理论能多少就多少,考虑其他两个线程计算公式,以实际测试结果为准1.最佳线程数=CPU核数×[1+(I/O耗时/CPU耗时)]2.线程数=CPU核数×目标CPU利用率×(1+平均等待时间/平均工作时间)jar内存多大...原创 2021-06-14 00:48:16 · 282 阅读 · 0 评论 -
hashmap
本质来说是一个node[]结构:默认0.75的负载因子,意思是超过容量3/4的时候,会对数组进行扩容数组默认长度 1<<4 无符号右移4位, 10000 16一个单向链表 node 内部类tableSizeFor 找到当前cup最接近的 2的次幂putval(){if(数组为空): resize() 初始化数组为默认长度if(判断hash是否存在) 不存在就添加新节点else 存在的情况–判断key的hash && key的equals key与第一个原创 2021-06-09 17:17:24 · 112 阅读 · 0 评论 -
copyOnWriteArrayList(cow)
场景; 主线程在遍历list的时候,子线程在向list中添加元素。抛出ConcurrentModificationException线程安全的list在对其实例进行修改操作(add/remove等)会新建一个数据并修改,修改完毕之后,再将原来的引用指向新的数组。这样,修改过程没有修改原来的数组。也就没有了ConcurrentModificationException错误。public boolean add(E e) {final ReentrantLock lock = this.lock;lo原创 2021-06-06 01:43:48 · 126 阅读 · 0 评论 -
Executors
Executors.newSingleThreadExecutor()new ThreadPoolExecutor(1, 1,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue()));是一个单线程的线程池,只有一个核心线程,都通过这个来执行线程池中最多执行1个线程,之后提交的线程活动将会排在队列中以此执行Executors.newCachedThreadPool();new ThreadPoolExecutor(0, Integer.MAX_VAL原创 2021-06-06 01:28:47 · 123 阅读 · 0 评论 -
ThreadPoll
1.corePoolSize(核心线程数)线程池中会维护一个最小的线程数量,即使这些线程处理空闲状态,他们也不会 被销毁,除非设置了allowCoreThreadTimeOut。这里的最小线程数量即是corePoolSize。内部参数:corePoolSize:线程池的基本大小,即在没有任务需要执行的时候线程池的大小,并且只有在工作队列满了的情况下才会创建超出这个数量的线程。这里需要注意的是:在刚刚创建ThreadPoolExecutor的时候,线程并不会立即启动,而是要等到有任务提交时才会启动,除非原创 2021-06-06 01:27:19 · 189 阅读 · 0 评论 -
对象生命周期
对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation)、应用阶段(Using)、不可视阶段(Invisible)、不可到达阶段(Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)与释放阶段(Free)。1.创建阶段(Created)一个Java类(除Object类外)至少有一个父类(Object),这个规则既是强制的,也是隐式的。你可能已经注意到在创建一个Java类的时候,并没有显式地声明扩展(extends)一个Object父类。不要对一个对象进原创 2021-06-06 01:21:28 · 1231 阅读 · 0 评论
分享