in Source Code

前言并发是Java开发中绕不开的一个话题。现代处理器都是多核心,想要更好地榨干机器的性能,多线程编程是必不可少,所以,线程安全是每位Java Engineer的必修课。应对线程安全问题,可大致分为两种方式:同步: 用Synchronized关键字,或者用java.util.concurrent...

in Source Code

前言为了满足对不同情况的垃圾回收需求,Java从版本1.2开始,引入了4种引用类型(其实是额外增加了三种)的概念。本文将详细介绍这四种引用。Java 4种引用类型Java中的4中引用类型分别为强引用(String Reference),软引用(Soft Reference),弱引用(Weak ...

in Handbook

背景定时任务是一个比较常见的功能,在某些情况下,需要重新启动或者是重设Scheduler Job,但是官方的API上都没有提供类似restart的方法,那该如何完成此需求呢?方案Spring QuartzSpring Quartz是一整套完整的Cron Job架构,可以完成复杂的任务调度需求,...

in Notebook

背景JMXJava Coder们都知道,Java提供了JMX(Java Management Extensions) attach的机制(如JConsole),可以动态获取JVM运行时的一些信息。我们可以自定义MBean,来暴露指定的一些参数值,如DB连接数等。为方便故障排查,我们添加了一些D...

in Troubleshooting

背景我们有一个Plugin的管理系统,可以实现Jar包的热装载,内部是基于一个Plugin管理类库PF4J,类似于OSGI,现在是GitHub上一个千星项目。以下是该类库的官网介绍A plugin is a way for a third party to extend the functio...