s2chronosですが、以下のようにプログラム例にならって書いても、
CloneTaskアノテーションで指定した数だけスレッドが走ってしまいます。
全くThreadPoolSizeに指定した数が効いてないようです。
今回約100万件のデータを処理するために初めてマルチスレッドに手を出しました。
さらに、例のようにgetThreadPool()メソッドを記述すると
タスクがスケジューラに登録されない状態になります。
(コメントアウトして実行しています)
java
1@Task 2@NonDelayTrigger 3public class BasicTask { 4 5 private static Logger log = Logger.getLogger(BasicTask.class); 6 7 private TaskThreadPool threadPool = new ThreadPool(); 8 9 public void initialize(){ 10 threadPool.setThreadPoolType(ThreadPoolType.FIXED); 11 threadPool.setThreadPoolSize(2); 12 } 13 14 // スレッドプールを返します. 15 public TaskThreadPool getThreadPool(){ 16 return threadPool; 17 } 18 19 // タスク処理 20 @CloneTask(20) 21 public void doExecute() { 22 log.info(this.getClass().getSimpleName() + ":doExecute"); 23 } 24 25}
古いプロダクトなので現在の環境
・JDK 1.7.40
・Tomcat 6
に対応していない可能性もあります。
そもそもドキュメントや使用例が少ないため、調べても出てこない状況です。
CloneTaskアノテーションを使わないシングルスレッドタスクなら問題ないのですが...。
知見をお持ちの方ご教授ください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。