【发布时间】:2020-03-03 13:14:18
【问题描述】:
使用
ThreadFactory创建新线程。如果没有另外指定,则使用Executors.defaultThreadFactory(),它创建的线程都处于相同的ThreadGroup并具有相同的NORM_PRIORITY优先级和非守护程序状态。通过提供不同的ThreadFactory,您可以更改线程的名称、线程组、优先级、守护进程状态等。
here 的一个例子有以下几行:
ThreadFactory threadFactory = Executors.defaultThreadFactory();
ThreadPoolExecutor executorPool = new ThreadPoolExecutor(2, 4, 10, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(2), threadFactory, rejectionHandler);
我试图在上述代码的上下文中理解官方文档中引用文本的最后一句话。换句话说,我怎样才能通过不同的ThreadFactory 来改变线程的名称、线程组、优先级和守护进程状态?这应该如何实现?
【问题讨论】:
-
您发布的代码使用了一个构造函数,该构造函数为执行程序指定了一个线程工厂。有什么问题?
-
ThreadFactory是一个接口,你可以自己创建一个实现。 -
所以我们自己实现
ThreadFactory是实现这一目标的唯一方法,而框架没有明确提供任何帮助器/实用程序类?不知何故,我觉得只提供接口并要求我们实现它以实现可能经常出现的用例场景有点不完整,并且提供这种实用程序工厂的预期框架。
标签: java multithreading