网站建设经验分享,在线详情页制作,做直播网站需要证书吗,建站目的在java中#xff0c;Timer主要负责计划任务的功能#xff0c;即在指定的时间开始执行某个任务。TimerTask是一个抽象类#xff0c;负责封装定时任务。 1、定时器Timer的使用 schedule(TimerTask task, Date date)#xff1a;在指定的日期执行一次task。 schedule(TimerTask… 在java中Timer主要负责计划任务的功能即在指定的时间开始执行某个任务。TimerTask是一个抽象类负责封装定时任务。 1、定时器Timer的使用 schedule(TimerTask task, Date date)在指定的日期执行一次task。 schedule(TimerTask task, Date date, long period)在指定的日期date之后按照period周期无限循环执行task TimerTask类中的cancel方法是将从任务队列中将任务自身移除。 Timer类的cancel方法是将任务队列中的全部任务进行清空需要抢到任务队列的锁之后才能进行清理。 schedule(TimerTask task, long delay)以当前时间为基准延迟delay的毫秒数后执行一次task。 schedule(TimerTask task, long delay, long period)以当前时间为基准延迟delay的毫秒数后再以period为周期周期性执行task。 scheduleAtFixedRate(TimerTask task, Date firstTime, long period)以firstTime为基准以period为周期周期性执行task。 定时器任务不一定准时执行有可能时到达指定时间后cpu被其他线程的同步区域占用。这时待获得cpu执行时间片段后才会执行定时任务。如果定时时间比当前时间早定时任务会立即执行。 2、单例模式
volatiledouble-check延迟加载方式
public class Singlton {
private volatile static Singlton instance;
private Singlton() { }
/**
* DCL双检查锁机制的延迟加载单例
* return
*/
public static Singlton getInstance() {
if(instance!null) {
}else{
synchronized(Singlton.class) {
if(instancenull) {
instancenew Singlton();
}
}
}
return instance;
}
}
内置类方式
public class Singlton {
private static class SingltonHandler {
private static Singlton instancenew Singlton();
}
private Singlton() {}
/**
* 静态内置类实现单例模式
* return
*/
public static Singlton getInstance() {
return SingltonHandler.instance;
}
}
内置类序列化和反序列化方式
import java.io.ObjectStreamException;
import java.io.Serializable;public class Singlton implements Serializable{
private static final long serialVersionUID -7197411174599222772L;private static class SingltonHandler {
private static Singlton instancenew Singlton();
}
private Singlton() {}
/**
* 静态内置类实现单例模式
* return
*/
public static Singlton getInstance() {
return SingltonHandler.instance;
}
/*
* 保证了单例模式下单态对象序列化和反序列化之后仍然维持一致
*/
protected Object readResolve() throws ObjectStreamException{
return SingltonHandler.instance;
}
}
静态块方式
public class Singlton {
private static Singlton instance;
private Singlton() {}
static {
instancenew Singlton();
}
/**
* 静态代码块实现单例模式
* return
*/
public static Singlton getInstance() {
return instance;
}}
枚举方式
//枚举类型本身是final的不允许被继承
public enum Singlton {
INSTANCE;
Singlton() {}
/**
* 枚举类型的实现
* return
*/
public static Singlton getInstance() {
return INSTANCE;
}}
延迟加载枚举内置方式
public class Singlton {
private Singlton() {}
private enum EnumHolder{
INSTANCE;
private Singlton singlton;
EnumHolder(){
this.singltonnew Singlton();
}
private Singlton getSinglton() {
return this.singlton;
}
}
/**
* 枚举类型的实现
* return
*/
public static Singlton getInstance() {
return EnumHolder.INSTANCE.getSinglton();
}}