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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
1 package alice.codesegment;
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
2
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
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
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
6
39
3155337e754e add logger
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
7 import org.apache.log4j.Logger;
3155337e754e add logger
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
8
6
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
9 public class CodeSegmentManager {
44
73158dc54c59 fix peek api
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
10
6
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
11 private static CodeSegmentManager instance = new CodeSegmentManager();
8
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
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
3155337e754e add logger
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
18 private Logger log = Logger.getLogger(CodeSegmentManager.class);
6
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
19
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
20 private CodeSegmentManager() {
8
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
21 Runnable prepareThread = new Runnable() {
6
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
22
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
23 @Override
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
24 public void run() {
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
25 while (true) {
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
26 try {
8
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
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
3155337e754e add logger
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
29 log.debug(cs.getClass().getName());
6
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
30 } catch (InterruptedException e) {
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
31 e.printStackTrace();
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
32 }
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
33 }
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
34 }
8
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
35
6
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
36 };
20
0bb03861b5cd set name to Thread
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
37 new Thread(prepareThread, "CodeSegmentManager").start();
6
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
38 }
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
39
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
40 public void create(CodeSegment cs) {
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
41 }
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
42
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
43 public static CodeSegmentManager get() {
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
44 return instance;
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
45 }
57
7fa9ddb31f64 add comment
one
parents: 44
diff changeset
46
7fa9ddb31f64 add comment
one
parents: 44
diff changeset
47 public static void submit(CodeSegment cs) {
7fa9ddb31f64 add comment
one
parents: 44
diff changeset
48 try {
7fa9ddb31f64 add comment
one
parents: 44
diff changeset
49 CodeSegmentManager.get().readyQueue.put(cs);
7fa9ddb31f64 add comment
one
parents: 44
diff changeset
50 } catch (InterruptedException e) {
7fa9ddb31f64 add comment
one
parents: 44
diff changeset
51 e.printStackTrace();
7fa9ddb31f64 add comment
one
parents: 44
diff changeset
52 }
7fa9ddb31f64 add comment
one
parents: 44
diff changeset
53 }
44
73158dc54c59 fix peek api
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
54
6
c78a1cc2cd8f implements Reply
one
parents:
diff changeset
55 }