如何使线程从其ExecutorService与Runnable通信



我目前正在使用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
    }
}

然而,我不知道如何提供要解析到线程的新文件。。。知道吗?

感谢

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

相关内容

  • 没有找到相关文章

最新更新