Java定时框架Quartz实例详解与定时任务的Mongodb、Mysql持久化实现(二)Quartz配置文件

Quartz核心配置文件quartz.properties常见配置详解(配置在classpath中或在web.xml中指定,示例附在最后)一、调度器属性配置1、instanceName属性,调度器实例名,可以设定任意字符串,QuartzSheduler也是不设定的默认值,它通常应用于Quartz集群环境,以区别不同的调度器。2、instanceId属性,调度器实例ID,和insta …… 阅读全文

Java定时框架Quartz实例详解与定时任务的Mongodb、Mysql持久化实现(三)Quartz持久化

就像我在上一篇中说的,把调度器信息存储在内存中非常的快也易于配置。但当调度器进程一旦被终止,所有的Job和Trigger的状态就丢失了。所以我们就需要把调度器信息持久化到数据库,在服务器重启时就可以自动启动终止的任务。Quartz不可能没有考虑到这个问题,可以通过引入Jar包与配置实现,并支持多种数据库版本。一、持久化到MongoDB1、引入Jar依赖好吧,我承认,这竟然是我做 …… 阅读全文

关于JVM一个容易被忽略的小问题

一个例子:public class A{ public static int a = 6;}然后两次运行程序:第一次:public class Test1{ public static void main(String[] args){ A a1 = new A(); a1.a ++; System.out.println(a1.a); …… 阅读全文

Java反射机制实例详解

一、前言类其实也是一种对象,是java.lang.Class类的实例。编译阶段类信息会被编译成.class文件,在类加载阶段,类加载器把.class文件读入JVM内存,生成java.lang.Class对象(这时已经可以通过Class对象查看类信息了),再经过类的连接(验证、准备、解析)与类的初始化阶段后即可使用类对象。我们通常使用的new关键字与反射创建实例时都会触发类初始化。(类的加载 …… 阅读全文

细节决定成败,浅析一些容易被忽视的Java关键字

一、default关键字default关键字,并不是访问修饰符中的default(默认的访问权限,不加public、private、protected访问修饰符的情况自动使用,同一包下的类可以访问字段),而是Java8的新特性,default关键字是不能修饰字段的。Java8以前的认知,Java的接口中的方法只能定义不能有方法体,方法体是由实现类去实现的。但是如果当我们要去扩展接口时,所有 …… 阅读全文

《Java虚拟机》必知必会——十四个问题总结(内存模型+GC)

一、Java概述1、Java相较于PHP、C#、Ruby等一样很优秀的编程语言的优势是什么?(1)体系结构中立,跨平台性能优越。Java程序依赖于JVM运行,javac编译器编译Java程序为平台通用的字节码文件(.class),再由JVM与不同操作系统匹配,装载字节码并解释(也有可能是编译,会在第三个问题中说到)为机器指令执行。(2)安全性优越。通过JVM与宿主环境隔离,且J …… 阅读全文

Java并发核心基础——线程池使用及底层实现机制详解

Java线程池概述:从使用入手:java.util.concurrent.Executosr是线程池的静态工厂,我们通常使用它方便地生产各种类型的线程池,主要的方法有三种:1、newSingleThreadExecutor()——创建一个单线程的线程池2、newFixedThreadPool(int n)——创建一个固定大小的线程池3、newCachedThreadPo …… 阅读全文

Java中如何正确而优雅的终止运行中的线程

Java中终止线程的方式主要有三种:1、使用stop()方法,已被弃用。原因是:stop()是立即终止,会导致一些数据被到处理一部分就会被终止,而用户并不知道哪些数据被处理,哪些没有被处理,产生了不完整的“残疾”数据,不符合完整性,所以被废弃。So, forget it!2、使用volatile标志位看一个简单的例子:首先,实现一个Runnable接口,在其中定义volatile标 …… 阅读全文