You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何向Thread构造器传递CountDownLatch?new Thread(this)有何作用?

Thread构造方法使用相关疑问解答

new Thread(this)的具体作用

你编写的MyThread类实现了Runnable接口,本质是一个封装了线程执行逻辑的任务对象。

  • 代码中的this指代当前正在初始化的MyThread实例本身
  • 这个写法匹配的是Thread类的Thread(Runnable target)构造方法,作用是把当前已经完成依赖初始化的任务实例,绑定到新建的Thread对象上,将该任务设置为这个Thread对象启动后需要执行的目标逻辑

注意:这段示例代码存在明显的逻辑缺陷——新建的Thread实例没有被赋值给任何变量,既没有保留对象引用,也没有调用start()方法触发线程启动,这个Thread对象无法正常执行任务,完成构造流程后就会失去可达引用,可被JVM回收。

CountDownLatch对象的传递逻辑

首先需要明确:CountDownLatch本身不属于Thread类构造方法的合法入参类型,不存在直接将CountDownLatch传递给Thread构造器的用法。很多初学者容易把自定义任务类的构造入参和Thread类的构造入参搞混,误以为传入自定义任务类的依赖最终会传给Thread构造方法,实际两者是完全独立的层级。
你在示例代码中看到的依赖传递实际遵循以下流程:

  • 先完成CountDownLatch的实例化
  • 将CountDownLatch作为自定义任务类(这里就是实现了Runnable的MyThread)的构造参数传入,存为任务类的成员变量,供任务的run()方法执行时调用countDown()、await()等核心方法
  • 待任务类完成所有依赖(包括CountDownLatch、任务名称)的初始化后,再将这个配好依赖的任务实例(也就是代码里的this)传给Thread类的构造方法,完成线程对象的创建
    整个传递链路中,CountDownLatch是自定义Runnable任务的内部依赖,并不会直接和Thread构造方法产生交互。

内容的提问来源于stack exchange,提问作者Lycanthropeus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 19:36:00