Mercurial > hg > Members > tatsuki > Alice
view src/alice/codesegment/CodeSegmentManager.java @ 65:ca42a2c8ac22
add local access api
author | kazz |
---|---|
date | Thu, 09 Feb 2012 19:33:46 +0900 |
parents | a76e603c43a0 |
children | d4c7f7b1096b |
line wrap: on
line source
package alice.codesegment; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import org.apache.log4j.Logger; public class CodeSegmentManager { private static CodeSegmentManager instance = new CodeSegmentManager(); public LinkedBlockingQueue<CodeSegment> readyQueue = new LinkedBlockingQueue<CodeSegment>(); private ThreadPoolExecutor codeSegmentExecutor = new ThreadPoolExecutor(1, // initial number of threads Runtime.getRuntime().availableProcessors(), Integer.MAX_VALUE, // keepAliveTime TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()); private Logger log = Logger.getLogger(CodeSegmentManager.class); private CodeSegmentManager() { Runnable prepareThread = new Runnable() { @Override public void run() { while (true) { try { CodeSegment cs = readyQueue.take(); codeSegmentExecutor.execute(cs); log.debug(cs.getClass().getName()); } catch (InterruptedException e) { e.printStackTrace(); } } } }; new Thread(prepareThread, "CodeSegmentManager").start(); } public void create(CodeSegment cs) { } public static CodeSegmentManager get() { return instance; } public static void submit(CodeSegment cs) { try { CodeSegmentManager.get().readyQueue.put(cs); } catch (InterruptedException e) { e.printStackTrace(); } } }