今天笔试遇见一道很有意思的题。题的大概意思是实现一个Timer来进行任务调度,即加入一个任务,然后任务就会在一定时间之后被执行。其实这道题本身并不难,但在实际操作的时候我碰见了很多问题,比如说存储timer是用Map还是LinkedList。我的第一反应是用Map, 速度快啊,但写到遍历的时候旧懵了,我一直以来都以为map的遍历是后list一样,哎,不等不删掉代码选用了速度更慢的后者。另一大问题是在构思的时候我一开始选择用两个容器(即两个map或两个list)来分别存放任务和时间,但写到最后才发现自己好傻b,应该用一个类把这两个变量封装起来啊!!!于是终于写出了如下的代码:
import java.util.*;
/*
* TimerController 是一个计时器控制器,当加入的timer达到运行时间时该timer的Thread就会执行
*/
public class TimerController {
static int TimerID = 0;
static LinkedList<timer> timerList = new LinkedList();
static Map<Integer,timer> map = new HashMap();
static boolean shouldRun = false;
Thread MainThread = new Thread(){
public void run(){
while(shouldRun){
Inspected();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
/*
*开启Ti