2016年10月02日

ThreadPool JDK5

メモしとこ。

JDK5から使えるスレッドプールの実装。

スレッド管理のわずらわしさから開放される。
以下のサンプルはMachineクラスがたまにアホになり無限ループする。
たぶんjextractとjdmpviewの勉強用に作ったサンプルだったと思う。


import java.util.*;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class test
{
    public static void main(String[] argv)
    {
        ExecutorService threadPool = Executors.newFixedThreadPool(5);
        
        Collection<Callable<Void>> processes = new LinkedList<Callable<Void>>();
        for(int i=0 ; i < 5; i++)
        {
            final Machine m = new Machine(i);
                processes.add(new Callable<Void>() {
                    @Override
                    public Void call() {
                        m.exec();
                        return null;
                    }
                });
        }
        
        try {
            threadPool.invokeAll(processes);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        } finally {
            threadPool.shutdown();
        }
    }
}
続きを読む
posted by koteitan at 17:05| Comment(0) | TrackBack(0) | Java | このブログの読者になる | 更新情報をチェックする