- 博客(8)
- 收藏
- 关注
原创 线上cpu飙高,死锁查询
线上 cpu 飚高如何排查 命令行: 第一步,top 先看看是哪个进程 找到 cpu占用最高的,如果是 java 然后用, 第二步:jstat 进程 id 得到当前进程下,所有运行的线程,然后找到占用最高的线程, jstack > stack.log 第三步:通过进程 id 得到它的子线程 id top -p -H 第三步:然后把线程 id 转成16进制字符串, printf “%x” <thread_id> 第四步:stack.log 查看线程 id (16 进制字符) less
2022-05-13 16:11:34 134
原创 遍历两个日期之间所有日期 工具类(借鉴)
public static List<String> lastDays(Integer days, boolean tansFormat) { LocalDate localDate = LocalDate.now(); LocalDate afterDate = localDate.minusDays((long)days); List<String> localDateTimes = new ArrayList(days);
2022-01-06 16:41:42 545
原创 线程死锁--避免
死锁一般是两个或两个以上的线程共同争抢一个资源而造成互相等待的一种情况,没有外力,破坏不了 互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源 保持不放。 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 最简单的方法就是阻止循环等待条件,将系统中所有的资源设置标志位、排序,规定所有的进程申请资源必须以一定的顺序(升序或降序)做操作来避免死锁。 1.申请资源按照顺序 加锁顺序
2021-10-13 23:51:51 155
原创 java8
Java 8 函数式接口 函数式接口(FunctionalInterface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 函数式接口可以被隐式转换为lambda表达式。 函数式接口可以现有的函数友好地支持 lambda。 JDK 1.8之前已有的函数式接口: · java.lang.Runnable · java.util.concurrent.Callable · java.security.PrivilegedAction · java.util.Comparator ·
2021-10-13 00:05:27 69
原创 线程池 --结束线程
当run() 或者 call() 方法执行完的时候线程会自动结束,如果要手动结束一个线程,可以用volatile 布尔变量来退出run()方法的循环或者是取消任务来中断线程 1.stop的方式类似于当你在上厕所,有个人直接把你拽起来,后果很严重!!! 2.suspend()和resume()相当于领导找你有事,可是你手上还有工作没有干完,你去舔领导,但是自己的事又只能自己干,相当于任务暂停,换言之也就是,比如b线程有个a的锁,b不完成直接休眠了,a就钥匙,等死中。。。 3.java提供了一种interrup
2021-10-12 23:08:40 1002
原创 线程池cpu设置
聊具体场景 CPU 密集型程序 I/O 密集型程序 所以,如果是多核CPU 处理 CPU 密集型程序,我们完全可以最大化的利用 CPU 核心数,应用并发编程来提高效率 线程等待时间所占比例越高,需要越多线程;线程CPU时间所占比例越高,需要越少线程。 对于 CPU 密集型来说,理论上 线程数量 = CPU 核数(逻辑)就可以了,但是实际上,数量一般会设置为 CPU 核数(逻辑)+ 1, 为什么呢? 计算(CPU)密集型的线程恰好在某时因为发生一个页错误或者因其他原因而暂停,刚好有一个“额
2021-10-12 22:34:59 476
原创 jvm第一期
jvm笔记第一期 heap里有一个eden两个surviur和一个终身,回收第一次把剩下的copy到s1中,第二次回收copy到s2中,然后再重复,最后放到终身去 判断是不是垃圾有两种 1.引用计数 2.根搜索 回收方法三种 1.mark-sweep先标记再清除,容易碎片化,不能分配完整的空间,实在找不到分配空间,来一次大的碎片整理 2.copying 内存半分,将上半部的copy到下半部顺便压缩,如此反复,但是会产生内存浪费 mark-compact 回收时顺带压缩,效率比copy低 java对象分配 先
2020-07-10 09:52:09 75
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人