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

Lambda表达式如何匹配方法?Java Thread构造方法调用疑问

Thread构造方法调用问题解答

为什么不会调用Thread(String name)构造方法?

你代码里的() -> {System.out.println("New runnable instance");}是Lambda表达式,它的类型是Runnable——因为完全匹配Runnable接口唯一的抽象方法run()(无参数、无返回值)。Java编译器会自动将这个Lambda适配为Runnable实例,所以传给Thread构造方法时,会精准匹配接收Runnable参数的Thread(Runnable runnable)构造方法。

而Thread(String name)构造方法需要String类型参数,Lambda和String属于完全不同的类型,编译器不会做跨类型自动转换,自然不会调用这个构造方法。

如何调用Thread(String name)构造方法?

有两种常见实现方式:

场景1:指定线程名+自定义执行逻辑

直接传入字符串作为线程名,同时重写Thread的run()方法定义执行逻辑:

Thread t = new Thread("MyCustomThread") {
    @Override
    public void run() {
        System.out.println("New runnable instance");
    }
};

场景2:同时指定Runnable逻辑和线程名

使用Thread的双参数构造方法Thread(Runnable runnable, String name),既传入Lambda(Runnable实例),又指定线程名:

Thread t = new Thread(() -> {System.out.println("New runnable instance");}, "MyCustomThread");

如果仅需创建指定名字的空逻辑线程,直接传字符串即可:

Thread t = new Thread("EmptyLogicThread");

内容的提问来源于stack exchange,提问作者A Hybris Dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:29:54