![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA基础
文章平均质量分 59
hunger_wang
这个作者很懒,什么都没留下…
展开
-
ScheduledThreadPoolExecutor定时任务会消失
ScheduledThreadPoolExecutor定时任务会消失背景我们通常使用Java原生ScheduledThreadPoolExecutor实现定时任务,当我们遇到定时任务不再执行情况时,一查会发现没有任何错误日志,线程还在但定时任务就是不执行,仿佛消失了,这是什么原因呢?举例下面例子代码,预期是每隔5秒执行一次DivideZero,但实际上只会执行1次,而且不会抛出任何异常。public class DelayTaskException { private static fina原创 2021-05-08 19:25:17 · 1474 阅读 · 0 评论 -
Java泛型知识
泛型泛型是一种高阶抽象,是将数据的类型参数化。是Java语言的“语法糖”——编码时有泛型,运行时没有泛型,都是Object。应用场景泛型类。适用于容器类型,如Bag、List。Java里面有Future<T>, List<T>泛型接口。泛型方法。好处类型安全。编码时已经限定放入什么,就取出什么,没有ClassCastException。代码重用。如何在运行期获取实际类型信息运行期获取泛型类对应实际类型信息,/** * 获取具体Handler处理的泛型类 *原创 2021-04-14 18:15:04 · 92 阅读 · 0 评论 -
查找Java应用指定类实例数量
查找Java应用内指定类实例数量背景最近,用户反馈我们系统某个业务慢。我们通过使用arthas trace追踪到是ch.qos.logback.core.OutputStreamAppender.writeBytes方法耗时长,而OutputStreamAppender是ch.qos.logback.core.ConsoleAppender的父类。我们系统日志组件采用logback,输出到控制台,高并发下ConsoleAppender写日志慢。由此,我们想确定ConsoleAppender是否是单例原创 2021-01-27 18:47:30 · 1824 阅读 · 0 评论 -
JDK默认GC算法是个谜
JDK默认GC算法是个谜背景我们系统采用openjdk:8u212-b04-jdk-stretch作为基础镜像,java -version命令输出: openjdk version "1.8.0_212" OpenJDK Runtime Environment (build 1.8.0_212-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)从输出信息可以看出是1.8.0版本的OpenJDK。现在因为应用原创 2021-01-25 20:21:13 · 1300 阅读 · 0 评论 -
Java线程池使用引起的一点思考
今天遇到这样一段代码,具体业务代码略掉,只留框架 ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 20, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue()); Thread task = new Thread(new Runnable(){ public...原创 2020-04-01 18:10:28 · 134 阅读 · 0 评论 -
Java正则表达式使用注意事项
我们写代码时经常遇到要对字符串进行校验、提取、替换等操作,利用正则表达式可以很方便地完成这些处理。Java原生支持正则表达式,但使用时有些地方需要注意。JDK的正则表达式涉及2个类:Pattern和Matcher。Pattern,表示一个正则表达式对象。Matcher,通过Pattern对象的matcher方法生成,参数是我们的原始字符串。表示Pattern对象对这个字符串进行正则相关操作的...原创 2020-03-09 17:27:34 · 700 阅读 · 1 评论 -
CyclicBarrier用法注意
CyclicBarrier用法注意背景最近,接运维报,生产环境某个Java应用内存一直缓慢增长。分析我们JVM堆内存配置最大和最小是一样,不可能增长;只可能是非堆内存增长。非堆内存包括类数据、线程、JIT编译的代码、GC数据、常量池、Internal、Compiler等等。具体参考NMT Memory Categories通过Spring Boot Admin查看应用详情,发现应用的...原创 2019-07-13 16:41:48 · 362 阅读 · 0 评论 -
Java源码Finalizer类理解
Finalizer类可以理解JVM为JAVA语言提供的全局性对象释放资源类(类似C语言的析构方法)。Finalizer类有一个全局储存Finalizer对象的ReferenceQueue和一个优先级较低的执行线程FinalizerThread。Finalizer类以链表的形式将需要释放资源的对象维护成Finalizer对象链。实现了finalize方法的类被JVM标记为f类,...原创 2019-09-16 21:35:12 · 694 阅读 · 0 评论