定时任务实现 java
来源:互联网 发布:spss面板数据回归分析 编辑:程序博客网 时间:2024/04/29 20:38
简单介绍一下背景,有N个人,要求每秒出现一个人,间隔也为一秒,不能重复,总耗时不能超过N+1秒
/*******************************************************************************
* $Header$
* $Revision$
* $Date$
*
*==============================================================================
*
* Copyright (c) 2001-2006 Primeton Technologies, Ltd.
* All rights reserved.
*
* Created on 2007-10-18
*******************************************************************************/
/**
* TODO 此处填写 class 信息
*
* @author wangwh (mailto:wangwh@primeton.com)
*/
/*
* 修改历史
* $Log$
*/
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
/*
* 创建一个任务类
*/
class MyTimeTask extends TimerTask {
public static long oldtime = System.nanoTime();//这里的时间都是用于测试运行周期的,以钠秒为单位.
private long oldtime2 = 0;//
private static Set set = new HashSet();//用set 来存取Object,也可用List;
public static int count = 0;//总人数;
/*
* 构造器
*/
MyTimeTask(int count) {
this.count = count;
}
/*
* 入栈方法
*/
public void push(Object o) {
set.add(o);
}
/*
* 出栈方法
*/
public Object pop() {
int t = (int) Math.random() % count;//取随机数
Object o = (set.toArray())[t];//取随机对象,这里可以改进一下,太丑了
set.remove(o);//取完后删除
count--;//将总人数减一
return o;
}
/*
*run方法,
*/
public void run() {
long t = System.nanoTime() - oldtime;
if(count==0)return ;//当最后一个人出栈的时候,不再执行
System.out.println("出栈的是 " + pop()+ "号 耗时 "+ t+" 钠秒");
oldtime = System.nanoTime();
}
}
public class TimerTest {
public static void main(String[] args) {
long oldtime2 = System.currentTimeMillis();
MyTimeTask myTask = new MyTimeTask(200);
Timer myTimer = new Timer();
//将人放入栈中
for (int i = 0; i < 200; i++) {
myTask.push(i);
}
myTimer.scheduleAtFixedRate(myTask, 0, 1000);//设置myTask的运行周期;并调用其RUN()方法
try {
Thread.sleep(200000);//主程序sleep 16秒,如果不够,可以再加
} catch (InterruptedException exc) {
exc.printStackTrace();
}
myTimer.cancel();//结束Timer
long t = System.currentTimeMillis() - oldtime2;
System.out.println("This process spend . " + t+ " second");
}
}
/*******************************************************************************
* $Header$
* $Revision$
* $Date$
*
*==============================================================================
*
* Copyright (c) 2001-2006 Primeton Technologies, Ltd.
* All rights reserved.
*
* Created on 2007-10-18
*******************************************************************************/
/**
* TODO 此处填写 class 信息
*
* @author wangwh (mailto:wangwh@primeton.com)
*/
/*
* 修改历史
* $Log$
*/
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
/*
* 创建一个任务类
*/
class MyTimeTask extends TimerTask {
public static long oldtime = System.nanoTime();//这里的时间都是用于测试运行周期的,以钠秒为单位.
private long oldtime2 = 0;//
private static Set set = new HashSet();//用set 来存取Object,也可用List;
public static int count = 0;//总人数;
/*
* 构造器
*/
MyTimeTask(int count) {
this.count = count;
}
/*
* 入栈方法
*/
public void push(Object o) {
set.add(o);
}
/*
* 出栈方法
*/
public Object pop() {
int t = (int) Math.random() % count;//取随机数
Object o = (set.toArray())[t];//取随机对象,这里可以改进一下,太丑了
set.remove(o);//取完后删除
count--;//将总人数减一
return o;
}
/*
*run方法,
*/
public void run() {
long t = System.nanoTime() - oldtime;
if(count==0)return ;//当最后一个人出栈的时候,不再执行
System.out.println("出栈的是 " + pop()+ "号 耗时 "+ t+" 钠秒");
oldtime = System.nanoTime();
}
}
public class TimerTest {
public static void main(String[] args) {
long oldtime2 = System.currentTimeMillis();
MyTimeTask myTask = new MyTimeTask(200);
Timer myTimer = new Timer();
//将人放入栈中
for (int i = 0; i < 200; i++) {
myTask.push(i);
}
myTimer.scheduleAtFixedRate(myTask, 0, 1000);//设置myTask的运行周期;并调用其RUN()方法
try {
Thread.sleep(200000);//主程序sleep 16秒,如果不够,可以再加
} catch (InterruptedException exc) {
exc.printStackTrace();
}
myTimer.cancel();//结束Timer
long t = System.currentTimeMillis() - oldtime2;
System.out.println("This process spend . " + t+ " second");
}
}
- 定时任务实现 java
- java 定时任务实现
- Java定时任务实现
- java实现定时任务
- 实现java定时任务
- java定时任务实现
- java实现定时任务
- java实现定时任务
- java实现定时任务
- Java实现定时任务
- java Timer实现定时任务
- Java定时任务的实现
- Java定时任务的实现
- Java定时任务的实现
- Java定时任务的实现
- Java定时任务的实现
- Java定时任务的实现
- Java定时任务的实现
- 开源领袖老黑客雷蒙德谈计算机语言
- ScreenSaver MIDlet with Location Service in MIDP 3.0
- 转一篇关于字符集编码的文章,写得不错!
- vista机器的RECOVERY(镜像还原)
- Hibernate+ehcache二级缓存技术
- 定时任务实现 java
- 卧春 我蠢
- 国外flash as高级程序特效研究探索网站(提供源码下载)
- PO Lines Creating
- Read cvs file
- VB.Net关于Excel中Sheet名称(一)
- 信用卡没有激活也是要收年费地!
- 今天为了解决编码的问题,整理了一些代码放到这里!
- DataRow.Delete()与Rows.Remove()