/*******************************************************************************
* $Header$
* $Revision$
* $Date$
*
*==============================================================================
*
* Copyright (c) 2001-2006 Primeton Technologies, Ltd.
* All rights reserved.
*
* Created on 2007-10-18
*******************************************************************************/
/**
* TODO 此处填写 class 信息
*
* @author wangwh (mailto:[email protected])
*/
/*
* 修改历史
* $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");
}
}