gpt4 book ai didi

java - 如何使用 lambda 来初始化具有命名线程的 ThreadFactory

转载 作者:行者123 更新时间:2023-12-02 01:23:10 25 4
gpt4 key购买 nike

通过方法引用,我可以使用以下代码创建一个 ThreadFactory 实例:

ThreadFactory factory = Thread::new;

根据ThreadFactory的接口(interface)定义,Thread::new将被解释为带有签名public Thread(Runnable target)的构造函数

Thread 还有另一个重载构造函数 public Thread(Runnable target, String name),

请问如何使用这个构造函数和方法引用/lambda来构造ThreadFactory?

最佳答案

ThreadFactory 有一个抽象方法 Thread newThread(Runnable),因此我们需要一个 lambda,它接受单个 Runnable 并返回一个线。您想要使用一个带有两个参数的方法(构造函数),并将其转换为只需要其中一个参数的方法。

创建一个“减少”输入数量的函数称为 currying ,使用它是 partial application 。在这种情况下,您需要提前部分应用您的线程名称。使用 lambda,您可以执行以下操作:

String name = "thread-name";
ThreadFactory factory = runnable -> new Thread(runnable, name);
// -> captures the value in "name"

请注意,每次调用时都会产生完全相同的线程名称,因此您不想在重复使用它的情况下使用它。

一些库,such as Vavr ,内置支持采用具有 N 个参数的函数并修复一个,但它没有内置到 JDK 中,而且修复非第一个参数通常需要自定义 lambda。

关于java - 如何使用 lambda 来初始化具有命名线程的 ThreadFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57335234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com