68
|
1 package fschmidt.util.executor;
|
|
2
|
|
3 import java.util.Date;
|
|
4 import java.util.Map;
|
|
5 import java.util.Set;
|
|
6 import java.util.concurrent.ConcurrentHashMap;
|
|
7 import java.util.concurrent.TimeUnit;
|
|
8 import java.util.concurrent.BlockingQueue;
|
|
9
|
|
10
|
|
11 public final class ThreadTimer implements RunnableWrapper {
|
|
12 private final Map<Thread,Date> map = new ConcurrentHashMap<Thread,Date>();
|
|
13
|
|
14 @Override public Runnable wrap(final Runnable command) {
|
|
15 return new Runnable(){public void run(){
|
|
16 map.put(Thread.currentThread(),new Date());
|
|
17 try {
|
|
18 command.run();
|
|
19 } finally {
|
|
20 map.remove(Thread.currentThread());
|
|
21 }
|
|
22 }};
|
|
23 }
|
|
24
|
|
25 public Date whenRun(Thread thread) {
|
|
26 return map.get(thread);
|
|
27 }
|
|
28
|
|
29 public Set<Thread> getThreads() {
|
|
30 return map.keySet();
|
|
31 }
|
|
32 }
|