多线程
优秀的佐同学
新人佐先生,坚持每日记录自己的学习经验(争取一天一更)
展开
-
jstack+top 定位占用资源的进程
cpu占用过高引起报警,使用top命令查看占用系统资源的进程 第一步:top,寻找cpu占用率较高的进程 第二步:top -pid 13213,寻找该进程中各线程的资源占用情况 第三步:jstack 13213 > jstack.log,将线程堆栈信息输出到指定文件里 对于多线程情况堆栈信息,可以使用printf ‘%x\n’ pid 将线程id转为16进制 使用jstack pid | grep -A 20 pid(16进制)命令将堆栈信息进行筛选 ...原创 2021-04-27 20:57:24 · 336 阅读 · 0 评论 -
粗略计算最佳线程数
最佳线程数目 = ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU数目 比如平均每个线程CPU运行时间为0.5s,而线程等待时间(非CPU运行时间,比如IO)为1.5s,CPU核心数为8,那么根据上面这个公式估算得到:((0.5+1.5)/0.5)*8=32。这个公式进一步转化为: 最佳线程数目 = (线程等待时间与线程CPU时间之比 + 1)* CPU数目 ...原创 2020-12-31 13:55:43 · 1088 阅读 · 0 评论 -
线程队列
线程队列有两种, concurrentLinkedQueue,非阻塞队列,内部使用锁实现 BlockingQueue,阻塞队列,满了就等待 package learn.thread0301; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; public class Concurrent...原创 2020-03-12 10:43:50 · 863 阅读 · 0 评论 -
常见的6种线程池及简单使用
jdk8线程池一共有6种,分别是 CachedThreadPool(cached线程池,当有任务进来的时候如果有空闲的线程则直接利用,如果无空闲线程,则新创建一个线程出来使用), ScheduleThreadPool(schedule线程池,定时线程池,指定一个线程什么时候开始执行), SingleThreadPool(single单例线程池,保只有一个线程,保证数据先后执行的顺序一致), F...原创 2020-03-12 10:33:04 · 453 阅读 · 0 评论