java程序每天定点执行某个类的程序!

java程序每天定点执行某个类的程序!,第1张

可以通过做监听器(在webxml中配置监听器),之后监听器里面的方法实现TimeTask 类,之后即可实现定时效果,执行某个程序

public class TaskManager implements ServletContextListener{

    private javautilTimer timer = null; 

    public void contextInitialized(ServletContextEvent event) { 

        timer = new javautilTimer(true); 

        eventgetServletContext()log("定时器已启动");         

        timerschedule(new MyTask(eventgetServletContext()), 0,2460601000);  //每一天看一次

        eventgetServletContext()log("已经添加任务调度表"); 

    } 

    public void contextDestroyed(ServletContextEvent event) { 

        timercancel(); 

        eventgetServletContext()log("定时器销毁"); 

    } 

}

class MyTask extends TimeTask {

    private static final int C_SCHEDULE_HOUR   = 0; //晚上0点时,执行

    private static boolean isRunning = false; 

    private ServletContext context = null; 

    public MyTask(ServletContext context) { 

        thiscontext = context; 

    } 

    public void run() { 

        Calendar cal = CalendargetInstance();         

        if (!isRunning)  {            

            if (C_SCHEDULE_HOUR == calget(CalendarHOUR_OF_DAY)) {             

                    isRunning = true;                 

                contextlog("开始执行指定任务"); 

                 

                //TODO 添加自定义的详细任务,以下只是示例 

                int i = 0; 

                while (i++ < 10) { 

                    contextlog("已完成任务的" + i + "/" + 10); 

                } 

   timerDoSomething();

                isRunning = false; 

                contextlog("指定任务执行结束");                

            }             

        } else { 

            contextlog("上一次任务执行还未结束"); 

        } 

    } 

  public static timerDoSomething(){

 Systemoutprintln("我已经执行了一次了!!!!!");

  }

}

  单例模式( )

单例模式是设计模式中使用最为普遍的模式之一 它是一种对象创建模式 用于产生一个对象的具体实例 它可以确保系统中一个类只产生一个实例 在Java语言中 这样的行为能带来两大好处

( )对于频繁使用的对象 可以省略创建对象所花费的时间 这对于那些重量级对象而言 是非常可观的一笔系统开销

( )由于new *** 作的次数减少 因而对系统内存的使用频率也会降低 这将减轻GC压力 缩短GC停顿时间

因此对于系统的关键组件和被频繁使用的对象 使用单例模式便可以有效地改善系统的性能

单例模式的参与者非常简单 只有单例类和使用者两个 如表 所示

表   单例模式角色

它的基本结构如图 所示

图   单例模式类图

单例模式的核心在于通过一个接口返回唯一的对象实例 一个简单的单例实现如下

public class Singleton {

private Singleton(){

System out println( Singleton is create ) //创建单例的过程可能会比较慢

}

private static Singleton instance = new Singleton()

public static Singleton getInstance() {

return instance;

}

}

注意代码中的重点标注部分 首先单例类必须要有一个private访问级别的构造函数 只有这样 才能确保单例不会在系统中的其他代码内被实例化 这点是相当重要的 其次 instance成员变量和getInstance()方法必须是static的

注意 单例模式是非常常用的一种结构 几乎所有的系统中都可以找到它的身影 因此 希望读者可以通过本节 了解单例模式的几种实现方式及其各自的特点

这种单例的实现方式非常简单 而且十分可靠 它唯一的不足仅是无法对instance实例做延迟加载 假如单例的创建过程很慢 而由于instance成员变量是static定义的 因此在JVM加载单例类时 单例对象就会被建立 如果此时 这个单例类在系统中还扮演其他角色 那么在任何使用这个单例类的地方都会初始化这个单例变量 而不管是否会被用到 比如单例类作为String工厂 用于创建一些字符串(该类既用于创建单例Singleton 又用于创建String对象)

public class Singleton {

private Singleton() {

System out println( Singleton is create )

//创建单例的过程可能会比较慢

}

private static Singleton instance = new Singleton()

public static Singleton getInstance() {

return instance;

}

public static void createString(){      //这是模拟单例类扮演其他角色

System out println( createString in Singleton )

}

}

       返回目录 Java程序性能优化 让你的Java程序更快 更稳定

编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

       J ME移动开发实战教学视频

Visual C++音频/视频技术开发与实战

Oracle索引技术

lishixinzhi/Article/program/Java/gj/201311/27837

程序如下。

import javautilStack;

public class MyUitl {

private Stack<Integer> values = new Stack<Integer>();

public static void main(String[] args){

MyUitl myUitl= new MyUitl();

myUitlCalculate(1);

}

public void Calculate(int num){

if(valuessize() == 5){

printValue(values);

return ;

}

for(int i=num;i<=15;i++){

//移除多余元素

while(!valuesisEmpty() && valuespeek() >= num){

valuespop();

}

//增加新元素

valuesadd(i);

Calculate(i+1);

}

}

private void printValue(Stack values) {

for(int i=0;i<valuessize();i++){

Systemoutprint(valuesget(i)+" ");

}

Systemoutprintln("");

}

}

public class TestThreadOutput {

public static void main(String[] args) {

OutputInt opi=new OutputInt();

Thread th1=new Thread(opi);

Thread th2=new Thread(opi);

th1start();

th2start();

}

}

class OutputInt implements Runnable{

public void run() {

for(int i=10;i<=15;i++){

Systemoutprint(i+",");

try {

Threadsleep(500);

} catch (InterruptedException e) {

eprintStackTrace();

}

}

}

}

0x15表示十进制数15。

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持goto语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的 *** 作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。

你先检查一下jdk是否安装好了。如果没毛病,不知道你的源程序是否编译了,然后在DOS下运行你的html文件(运行前必须进入你的html的文件所在的目录,并执行appletviewer UseArithmetichtml。还有你运行时编译后的class文件 等在同一个目录上)

再不行 你就在eclipse上运行吧!(注意配置好环境)

由于你没有上传代码 没法具体分析 只能说下Timer的使用方法 你可以参考下 看看自己使用有没有问题 没有的话 提供下代码和错误日志 才能具体分析

方法摘要

void

cancel()

终止此计时器,丢弃所有当前已安排的任务。

int

purge()

从此计时器的任务队列中移除所有已取消的任务。

void

schedule(TimerTask task,

Date time)

安排在指定的时间执行指定的任务。

void

schedule(TimerTask task,

Date firstTime,

long period)

安排指定的任务在指定的时间开始进行重复的固定延迟执行。

void

schedule(TimerTask task,

long delay)

安排在指定延迟后执行指定的任务。

void

schedule(TimerTask task,

long delay, long period)

安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

void

scheduleAtFixedRate(TimerTask task,

Date firstTime,

long period)

安排指定的任务在指定的时间开始进行重复的固定速率执行。

void

scheduleAtFixedRate(TimerTask task,

long delay, long period)

安排指定的任务在指定的延迟后开始进行重复的固定速率执行。

以上就是关于java程序每天定点执行某个类的程序!全部的内容,包括:java程序每天定点执行某个类的程序!、Java程序性能优化-单例模式(1)、用java编写一个程序,内容为匆1-15这几个数中随机选6个不重复数,输出所有结果等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10175861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存