# HG changeset patch # User Nozomi Teruya # Date 1513251978 -32400 # Node ID 5be6647b87d20502f02d2fac207a79398f258100 # Parent 605f1b0576c2d87589cceb9d3bcb4e7da1129116 StartCodeGear implements Runnable to wait InputDataGear diff -r 605f1b0576c2 -r 5be6647b87d2 src/main/java/christie/codegear/CodeGear.java --- a/src/main/java/christie/codegear/CodeGear.java Wed Dec 13 17:35:25 2017 +0900 +++ b/src/main/java/christie/codegear/CodeGear.java Thu Dec 14 20:46:18 2017 +0900 @@ -13,8 +13,8 @@ * Annotationからのinputコマンドの生成、揃ったDataGearの値を返す */ public abstract class CodeGear implements Runnable { - public InputDataGear idg = new InputDataGear(); - public OutputDataGear odg = new OutputDataGear(); + public InputDataGear idg = new InputDataGear(this); + public OutputDataGear odg = new OutputDataGear(this); public ArrayList commandList = new ArrayList(); public CodeGearManager cgm; public DataGearManager dgm; @@ -22,7 +22,7 @@ public CodeGear(CodeGearManager cgm){//AnnotationからInputDataGearをセット this.cgm = cgm; this.dgm = cgm.getDGM("local"); - odg.initODG(cgm, this); + odg.initODG(cgm); for (Field field : this.getClass().getDeclaredFields()) { if (field.isAnnotationPresent(Take.class)){ @@ -31,7 +31,7 @@ } } - idg.finishInput(this.cgm, this, commandList); + idg.finishInput(this.cgm, commandList); } public void setInputValue(){//Annotationから揃ったInputDataGearの値をキャスト diff -r 605f1b0576c2 -r 5be6647b87d2 src/main/java/christie/codegear/CodeGearManager.java --- a/src/main/java/christie/codegear/CodeGearManager.java Wed Dec 13 17:35:25 2017 +0900 +++ b/src/main/java/christie/codegear/CodeGearManager.java Thu Dec 14 20:46:18 2017 +0900 @@ -25,9 +25,21 @@ } public void submit(CodeGear cg){ + codeGearExecutor.setThreadFactory(makeThreadFactory(Thread.MAX_PRIORITY)); codeGearExecutor.execute(cg); } + private ThreadFactory makeThreadFactory(final int priority) { + return new ThreadFactory() { + @Override + public Thread newThread(Runnable r) { + Thread thread = new Thread(r); + thread.setPriority(priority); + return thread; + } + }; + } + public DataGearManager getDGM(String dest){ return dataGearManagers.get(dest); } diff -r 605f1b0576c2 -r 5be6647b87d2 src/main/java/christie/codegear/InputDataGear.java --- a/src/main/java/christie/codegear/InputDataGear.java Wed Dec 13 17:35:25 2017 +0900 +++ b/src/main/java/christie/codegear/InputDataGear.java Thu Dec 14 20:46:18 2017 +0900 @@ -15,9 +15,12 @@ public CodeGear cg; private int count = 0; - void finishInput(CodeGearManager cgm, CodeGear cg, ArrayList commandList){ + public InputDataGear(CodeGear cg){ + this.cg = cg; + } + + void finishInput(CodeGearManager cgm, ArrayList commandList){ this.cgm = cgm; - this.cg = cg; count = commandList.size(); if(count == 0){ diff -r 605f1b0576c2 -r 5be6647b87d2 src/main/java/christie/codegear/OutputDataGear.java --- a/src/main/java/christie/codegear/OutputDataGear.java Wed Dec 13 17:35:25 2017 +0900 +++ b/src/main/java/christie/codegear/OutputDataGear.java Thu Dec 14 20:46:18 2017 +0900 @@ -9,9 +9,12 @@ public CodeGearManager cgm; public CodeGear cg; - public void initODG(CodeGearManager cgm, CodeGear cg){ + public OutputDataGear(CodeGear cg){ + this.cg = cg; + } + + public void initODG(CodeGearManager cgm){ this.cgm = cgm; - this.cg = cg; } public void put(String key, Object data){ diff -r 605f1b0576c2 -r 5be6647b87d2 src/main/java/christie/codegear/StartCodeGear.java --- a/src/main/java/christie/codegear/StartCodeGear.java Wed Dec 13 17:35:25 2017 +0900 +++ b/src/main/java/christie/codegear/StartCodeGear.java Thu Dec 14 20:46:18 2017 +0900 @@ -1,28 +1,31 @@ package christie.codegear; import java.util.HashMap; -import java.util.Queue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -public abstract class StartCodeGear { +public abstract class StartCodeGear implements Runnable { static HashMap cgms = new HashMap(); static LinkedBlockingQueue taskQueue = new LinkedBlockingQueue(); - static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(), // initial number of threads + static ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(), // initial number of threads Runtime.getRuntime().availableProcessors(), Integer.MAX_VALUE, // keepAliveTime TimeUnit.SECONDS, taskQueue); - public static CodeGearManager createCGM(String name){ - CodeGearManager cgm = new CodeGearManager(threadPool); + CodeGearManager cgm = new CodeGearManager(threadPoolExecutor); cgms.put(name, cgm); return cgm; } - public static CodeGearManager getCGM(String name){ + public CodeGearManager getCGM(String name){ return cgms.get(name); } + + public void execute(){ + threadPoolExecutor.execute(this); + } + } diff -r 605f1b0576c2 -r 5be6647b87d2 src/main/java/christie/datagear/DataGear.java --- a/src/main/java/christie/datagear/DataGear.java Wed Dec 13 17:35:25 2017 +0900 +++ b/src/main/java/christie/datagear/DataGear.java Thu Dec 14 20:46:18 2017 +0900 @@ -1,9 +1,5 @@ package christie.datagear; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - public class DataGear{ T data; byte[] byteData; diff -r 605f1b0576c2 -r 5be6647b87d2 src/main/java/christie/test/StartTest.java --- a/src/main/java/christie/test/StartTest.java Wed Dec 13 17:35:25 2017 +0900 +++ b/src/main/java/christie/test/StartTest.java Thu Dec 14 20:46:18 2017 +0900 @@ -5,9 +5,13 @@ public class StartTest extends StartCodeGear{ public static void main(String args[]){ + new StartTest().execute(); + } + + @Override + public void run() { TestCodeGear test = new TestCodeGear(createCGM("first")); test.dgm.put("hoge", "hogehogehoge"); test.dgm.put("huga", 100); } - }