Mercurial > hg > Database > Alice
annotate src/alice/codesegment/CodeSegmentManager.java @ 57:7fa9ddb31f64
add comment
author | one |
---|---|
date | Wed, 08 Feb 2012 16:07:33 +0900 |
parents | 73158dc54c59 |
children | ebdcab7b9b04 |
rev | line source |
---|---|
6 | 1 package alice.codesegment; |
2 | |
3 import java.util.concurrent.LinkedBlockingQueue; | |
21
145667a554ad
run CodeSegment with ThreadPoolExecutor
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
4 import java.util.concurrent.ThreadPoolExecutor; |
145667a554ad
run CodeSegment with ThreadPoolExecutor
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
5 import java.util.concurrent.TimeUnit; |
6 | 6 |
39 | 7 import org.apache.log4j.Logger; |
8 | |
6 | 9 public class CodeSegmentManager { |
44 | 10 |
6 | 11 private static CodeSegmentManager instance = new CodeSegmentManager(); |
8 | 12 public LinkedBlockingQueue<CodeSegment> readyQueue = new LinkedBlockingQueue<CodeSegment>(); |
21
145667a554ad
run CodeSegment with ThreadPoolExecutor
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
13 ThreadPoolExecutor codeSegmentExecutor = new ThreadPoolExecutor(1, |
145667a554ad
run CodeSegment with ThreadPoolExecutor
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
14 Runtime.getRuntime().availableProcessors(), |
145667a554ad
run CodeSegment with ThreadPoolExecutor
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
15 Integer.MAX_VALUE, |
145667a554ad
run CodeSegment with ThreadPoolExecutor
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
16 TimeUnit.SECONDS, |
145667a554ad
run CodeSegment with ThreadPoolExecutor
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
17 new LinkedBlockingQueue<Runnable>()); |
39 | 18 private Logger log = Logger.getLogger(CodeSegmentManager.class); |
6 | 19 |
20 private CodeSegmentManager() { | |
8 | 21 Runnable prepareThread = new Runnable() { |
6 | 22 |
23 @Override | |
24 public void run() { | |
25 while (true) { | |
26 try { | |
8 | 27 CodeSegment cs = readyQueue.take(); |
21
145667a554ad
run CodeSegment with ThreadPoolExecutor
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
28 codeSegmentExecutor.execute(cs); |
39 | 29 log.debug(cs.getClass().getName()); |
6 | 30 } catch (InterruptedException e) { |
31 e.printStackTrace(); | |
32 } | |
33 } | |
34 } | |
8 | 35 |
6 | 36 }; |
20 | 37 new Thread(prepareThread, "CodeSegmentManager").start(); |
6 | 38 } |
39 | |
40 public void create(CodeSegment cs) { | |
41 } | |
42 | |
43 public static CodeSegmentManager get() { | |
44 return instance; | |
45 } | |
57 | 46 |
47 public static void submit(CodeSegment cs) { | |
48 try { | |
49 CodeSegmentManager.get().readyQueue.put(cs); | |
50 } catch (InterruptedException e) { | |
51 e.printStackTrace(); | |
52 } | |
53 } | |
44 | 54 |
6 | 55 } |