我目前使用ExecutorService
解析文件:如何使其ExecutorService中的线程与Runnable进行通信?
ExecutorService service = Executors.newFixedThreadPool(10);
及更高版本:
service.submit(new FileParser(file));
但是用来解析文件的工具需要一个初始化这需要相当长。我想每个线程只执行一次初始化(因为初始化参数不是线程安全的,所以并不是一次),然后只执行提交的可运行子句中的解析。
我看到ThreadFactory
可用于提供我自己的线程来执行程序,这样我就可以初始化我的参数是这样的:
public class MyThreadFactory implements ThreadFactory {
public Thread newThread(Runnable r) {
return new MyThread(); // Initialization part inside the constructor
}
}
但是后来我对如何提供新的文件,不知道解析到线程... 任何想法?
感谢
是否需要初始化取决于要解析的文件?那么看起来,你必须在创建FileParser的时候这样做。 ThreadFactory.newThread将由ExecutorService调用。事实上,这个参数不会是你的Runnable(即FileParser),但它将是一个包装工人。 – Seelenvirtuose