线程池实现原理
摘要:在Java线程的实现/创建方式中介绍了集中线程创建的方式,最后一种是线程池的方式创建线程。那么线程池是基于什么样的原理实现的呢?线程复用——参考多线程设计模式之Worker Thread模式中自定义线程池的使用。 1、线程复用原理: 每一个 Thread 的类都有一个 start 方法。 当调用 s
阅读全文
posted @
2021-12-30 11:08
池塘里洗澡的鸭子
阅读(968)
推荐(0)
FutureTask类的get方法如何实现线程同步等待
摘要:在JDK中实现线程同步等待闭环(FutureTask/Future),为什么使用了FutureTask中的get方法就可以实现线程的同步等待?这就将重点讲述下FutureTask这个类了,实际上Future接口和实现Future接口的FutureTask类,表示异步计算的结果。其UML类继承图,如下
阅读全文
posted @
2021-12-29 15:41
池塘里洗澡的鸭子
阅读(1311)
推荐(0)
线程基本方法及其对线程状态的影响
摘要:Java线程的实现/创建方式实现/创建了线程,那么线程设置了哪些状态及线程对象方法对这些状态有什么样的改变呢? 首先看看线程设置了哪些状态: 通过上图可知,Thread使用内部枚举类State设置了其6中状态:new, runnable, blocked, waiting, timed_waitin
阅读全文
posted @
2021-12-28 12:54
池塘里洗澡的鸭子
阅读(95)
推荐(0)
Java线程的实现/创建方式
摘要:1、继承Thread类: Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。 启动线程的唯一方法就是通过 Thread 类的 start()实例方法。 start()方法是一个 native 方法,它将启动一个新线程,并执行 run()方法。 2、实现Runnab
阅读全文
posted @
2021-12-28 10:31
池塘里洗澡的鸭子
阅读(236)
推荐(0)
Java线程间通讯——等待通知机制
摘要:在JDK中实现线程同步等待闭环(FutureTask/Future)中已经实现了线程之间的同步等待。具体如何实现的呢?需要分析具体方式具体代码,如下: 1、join()方法 2、Future/FutureTask 以上两图中都有wait字眼,即等待线程结束。这种Java中对多线程执行顺序使用等待/通
阅读全文
posted @
2021-10-31 23:19
池塘里洗澡的鸭子
阅读(199)
推荐(0)
JMM之synchronized关键字
摘要:在JDK中实现线程同步等待闭环(FutureTask/Future)中实现同步等待,使用了synchronized关键字而且一定要使用该关键字。为什么呢?与其与生俱来的功能相关——对于通讯,涉及两个关键字volatile和synchronized: Java支持多个线程同时访问一个对象或者对象的成员
阅读全文
posted @
2021-10-31 18:17
池塘里洗澡的鸭子
阅读(86)
推荐(0)
JVM调优维护之常用命令
摘要:熟练使用Linux/Unix操作系统,对命令都不陌生。对JVM命令类似掌握常用命令熟练使用可以参考操作系统内存管理相关命令——因为JVM的重中之重就是内存的结构及管理(在Linux/Unix操作系统上可以用man查阅其使用说明,在usr/bin下j*开头的基本就是)。 具体命令可以参考官网https
阅读全文
posted @
2021-10-28 18:49
池塘里洗澡的鸭子
阅读(1954)
推荐(0)
JDK中实现线程同步等待闭环(FutureTask/Future)
摘要:实际Thread类自带的join方法就实现了线程同步等待,具体可以通过案例实践,如下: 本文的重点不是join,而是另一种设计的同步等待实现,涉及的关键类有:Thread、Runable、Callable、Future、FutureTask、ThreadPoolExecutor。将它们分为两组介绍:
阅读全文
posted @
2021-10-13 11:50
池塘里洗澡的鸭子
阅读(75)
推荐(0)
Linux性能优化之磁盘I/O调优
摘要:I/O指标已介绍,那么如何查看系统的这些指标呢? 一、根据工具查性能 二、根据性能找工具 三、磁盘I/O观察实例 iostat 是最常用的磁盘 I/O 性能观测工具,它提供了每个磁盘的 使用率 、 IOPS 、 吞吐量 等各种常见的性能指标。这些指标实际上来自 /proc/diskstats。 1)
阅读全文
posted @
2021-10-09 13:42
池塘里洗澡的鸭子
阅读(1451)
推荐(0)
Linux性能优化之磁盘I/O性能指标
摘要:讨论指标之前,得先解决两个概念:文件系统和磁盘I/O栈。 文件系统是什么?文件系统是在磁盘的基础上,提供了一个用来管理文件的树状结构。简言之,文件系统是树状结构,一种数据结构~逻辑上的概念。磁盘大家都比较熟悉了,硬件设备。借图描述下两者的关系: IO栈指Linux操作系统中的IO路径,算是其比较复杂
阅读全文
posted @
2021-10-09 13:25
池塘里洗澡的鸭子
阅读(623)
推荐(0)
Linux性能优化之内存性能调优
摘要:一、根据性能指标找工具 二、根据工具查性能 三、内存优化策略 常见的优化思路有这么几种: 1)最好禁止 Swap。如果必须开启 Swap,降低 swappiness 的值,减少内存回收时 Swap 的使用倾向。 2)减少内存的动态分配。比如,可以使用内存池、大页(HugePage)等。 3)尽量使用
阅读全文
posted @
2021-10-09 11:58
池塘里洗澡的鸭子
阅读(1071)
推荐(0)
Linux性能优化之内存性能统计信息
摘要:关于内存的概念及其原理在任何一本介绍操作系统的书本中都可以查阅到。理论放一遍,在Linux操作系统中如何查看系统内存使用情况呢?看看内存统计信息有哪些维度。 一、内存使用量 详细使用方法,man free top命令,之前在研究cpu性能优化过程中已经用到,但是重点放在CPU相关的指标上。这里重点查
阅读全文
posted @
2021-10-09 11:32
池塘里洗澡的鸭子
阅读(258)
推荐(0)
LinuxCPU性能工具总结
摘要:一、根据性能指标找工具 二、根据工具查性能指标
阅读全文
posted @
2021-10-06 19:11
池塘里洗澡的鸭子
阅读(53)
推荐(0)
CPU使用率过高怎么办
摘要:实际上前文中关于CPU使用率过高如何通过各种工具获得相关的热点进程。那么进程有了,那得疑惑到底哪个哪段代码导致了这个进程成为热点呢?如果在调试阶段,可以使用gdb中断运行,但是在生产环境肯定不行。Linux提供了一个工具perf。 安装它即可,然后man perf查看其使用说明。 常用的一种,统计分
阅读全文
posted @
2021-10-06 19:07
池塘里洗澡的鸭子
阅读(1337)
推荐(0)
CPU优化上下文切换之线程上下文切换案例分析
摘要:对于线程上下文切换,如果同进程内就是只是线程上下文切换,如果非同进程内则是进程上下文切换。下面进行线程上下文切换场景模拟。 一、环境准备~模拟工具sysbench。 1)安装git yum -y install git 2)下载sysbench git clone https://github.co
阅读全文
posted @
2021-10-06 18:43
池塘里洗澡的鸭子
阅读(141)
推荐(0)
Linux-CPU优化之上下文切换
摘要:为什么大量进程(通常进程数大于CPU个数)的运行会导致CPU长时间处于等待时间而导致平均负债率过高呢?没有使用CPU且无不可中断的进程,这就涉及到了上下文切换。 巧妙地利用了时间片轮转的方式, CPU 给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一任务
阅读全文
posted @
2021-10-06 17:19
池塘里洗澡的鸭子
阅读(198)
推荐(0)
CPU平均负载率之stress模拟CPU密集型进程
摘要:一、对CPU密集型进程进行模拟,具体如下: 第一个终端 在第一个终端运行 stress 命令,模拟一个 CPU 使用率 100% 的场景:stress --cpu 1 -- timeout 600 第二个终端 运行 uptime 查看系统平均负载情况,watch -d 参数表示高亮显示变化的区域:w
阅读全文
posted @
2021-10-06 06:13
池塘里洗澡的鸭子
阅读(579)
推荐(0)
CPU优化之平均负载率之辅助工具
摘要:前面介绍了平均负载均衡的一些内容,那实际应用中如何查看,分析性能瓶颈呢?下面介绍相关的辅助工具。 一、stress stress是Linux 系统压力测试工具,其通过异常进程模拟平均负载升高的场景(前文介绍的三种均可以模拟)。首先下载其包,并解压到/usr/local/src下并编译安装,具体步骤如
阅读全文
posted @
2021-10-06 05:37
池塘里洗澡的鸭子
阅读(186)
推荐(0)
Linux-CPU优化之平均负载率
摘要:一、平均负载率定义 平均负载是指单位时间内,系统处于可运行状态 和不可中断状态 的平均进程数,也就是平均活跃进程数,它和CPU 使用率并没有直接关系。 可运行状态的进程:是指正在使用 CPU 或者正在等待CPU 的进程,也就是我们常用 ps 命令看到的,处于R 状态(Running 或Runnabl
阅读全文
posted @
2021-10-05 21:06
池塘里洗澡的鸭子
阅读(517)
推荐(0)
Linux性能优化概述
摘要:一、Linux性能概述 性能优化是个系统工程,总是牵一发而动全身,它涉及了从程序设计、编程语言,再到系统、存储、网络等各种底层基础设施的方方面面。每一个组件都有可能出问题,而且很有可能多个组件同时出问题。 Linux 性能的基本指标包括 CPU 性能、磁盘 I/O 性能、内存性能以及网络性能等。 系
阅读全文
posted @
2021-10-05 19:01
池塘里洗澡的鸭子
阅读(185)
推荐(0)