KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > tasks > TaskManager


1 package com.sslexplorer.tasks;
2
3 import java.util.HashMap JavaDoc;
4 import java.util.Map JavaDoc;
5
6 import org.apache.commons.logging.Log;
7 import org.apache.commons.logging.LogFactory;
8
9 import com.sslexplorer.security.SessionInfo;
10
11 public class TaskManager {
12     final static Log log = LogFactory.getLog(TaskManager.class);
13     
14     private Map JavaDoc<Integer JavaDoc, Task> tasks = new HashMap JavaDoc<Integer JavaDoc, Task>();
15     private int id;
16     
17     private static TaskManager instance;
18     
19     public static TaskManager getInstance() {
20         if(instance == null) {
21             instance = new TaskManager();
22         }
23         return instance;
24     }
25     
26     public synchronized void startTask(final Task task, SessionInfo session) {
27         id++;
28         tasks.put(id, task);
29         task.init(session, id);
30         Thread JavaDoc t = new Thread JavaDoc() {
31             public void run() {
32                 try {
33                     task.run();
34                 }
35                 catch(Exception JavaDoc e) {
36                     log.error("Task failed. ", e);
37                 }
38                 finally {
39                     task.complete();
40                 }
41             }
42         };
43         t.start();
44     }
45     
46     public Task getTask(int id) {
47         return tasks.get(id);
48     }
49
50     public void remove(Task task) {
51         log.info("Removing task " + task);
52         tasks.remove(task.hashCode());
53     }
54 }
55
Popular Tags