/*
* myLib - https://github.com/taktod/myLib
* Copyright (c) 2014 ttProject. All rights reserved.
*
* Licensed under GNU GENERAL PUBLIC LICENSE Version 3.
*/
package com.ttProject.transcode.xuggle.test;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
/**
* executorserviceを使うかループthreadを使うかまよっているので、ちょっとテストしてみる。
* @author taktod
*/
public class ThreadTest {
/** 動作ロガー */
private Logger logger = Logger.getLogger(ThreadTest.class);
/**
* テスト
*/
// @Test
public void test() {
ExecutorService exec = Executors.newFixedThreadPool(3);
final ExecutorService single = Executors.newSingleThreadExecutor();
try {
for(int i = 0;i < 10;i ++) {
System.out.println("処理:" + i);
exec.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
System.out.println("done!" + Thread.currentThread().getId());
final String data = "done!" + (new Date()).toString() + Thread.currentThread().getId();
single.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
System.out.println("data:" + data);
}
catch(Exception e) {
e.printStackTrace();
}
}
});
}
catch(Exception e) {
e.printStackTrace();
}
}
});
}
// これで終わるまで待ちますね。
System.out.println("done!");
exec.shutdown();
System.out.println("shutdownかけた");
exec.awaitTermination(1000000, TimeUnit.MILLISECONDS);
System.out.println("本当におわり");
// ここにいれないと、singleのやつがおわったあとに追加されちゃうわけね。
single.shutdown();
single.awaitTermination(1000000, TimeUnit.SECONDS);
}
catch(Exception e) {
logger.warn("例外が発生しました。", e);
}
}
}