0

我目前ExecutorService用于解析文件:

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
    }
}

但是,我不知道如何提供新文件以解析到线程......知道吗?

谢谢

4

1 回答 1

1

您可以使用ThreadLocal变量进行此初始化。在每次执行期间,您可以检查是否已为当前线程执行了初始化,然后将其用于存储您需要的任何内容。

于 2013-07-25T13:24:28.107 回答