- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
通过方法引用,我可以使用以下代码创建一个 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/
Executors public class Executors 1、 一个功能非常强大的辅助类; 2、 此包中所定义的Executor、ExecutorService、Schedule
我正在为我的应用程序实现一个线程池,我想将 newCachedThreadPool 与 ThreadFactory 一起使用,我想知道我下面写的是否正确。 1.使用newCachedThreadPoo
每次我们执行多次提交操作时,我说得对吗: ExecutorService executor = Executors.newSingleThreadExecutor( new M
在我的应用程序中,我使用带有自定义 ThreadFactory 的线程池。 我的代码如下: pool = Executors.newScheduledThreadPool(10, new TF());
我正在尝试将 JEE 服务迁移到 Quarkus想知道如何在 Quarkus 应用程序中获取线程工厂。只需创建一个像 javaExecutors.defaultThreadFactory();就像在
通过方法引用,我可以使用以下代码创建一个 ThreadFactory 实例: ThreadFactory factory = Thread::new; 根据ThreadFactory的接口(inter
我试图了解有关 newSingleThreadExecutor 的一些内容 - 下面说的是,当没有提到 ThreadFactory 时,它是如何按顺序执行任务的。 public static Exec
ScheduledThreadPoolExecutor 的构造函数之一允许我将 ThreadFactory 传递给它。 这有点奇怪,因为我已经在处理线程池了!这意味着它知道如何管理线程生命周期。 在我
我认为有必要在 ThreadFactory 中使用 AtomicInteger 但是当我试图向自己证明这一点时,我失败了。 new ThreadFactory() { priv
我试图为提交给 ThreadPoolExecutor 的每个 MyRunnable 分配一个编号,但没有成功。 我的代码片段: import java.util.concurrent.*; class
我有一个 Java ThreadFactory 实现,在我的 Android 应用程序中生成可运行的线程子类对象。此应用程序要求所有生成的线程在某个事件触发之前都是可寻址的,并且在触发所述事件时,可以
我有一个 ExecutorService 和 ScheduledExecutorService,我正在使用自定义 ThreadFactory,以便我可以根据 的类型命名每个线程>runnable 输入
尝试使用 ThreadFactory 创建单元测试(边界集成测试),只是想知道如何“强制”Java/JVM 无法创建更多线程? 换句话说,我如何调用 ThreadFactory.newThread 并
这是可能的还是由应用服务器管理?将 ThreadPoolTaskExecutor ref 传递给 bean 很简单,但尝试在上述执行程序上设置 threadfactory 似乎没有任何效果....
我们正在构建一个ThreadFactory,因此每次单例 Controller 需要一个新线程时,我每次都会得到一个新实例。 查看Lookup method injection看起来不错,但是如果我们
在我的论文中,我正在研究离散事件系统模拟器。模拟由一组 SimulatorThread extends Thread 组成,其操作包括将 Event 调度到 Simulator。每个 Simulato
我是一名优秀的程序员,十分优秀!