使用lambda的Runnable线程

时间:2019-02-26 13:16:53

标签: java lambda

我有此代码:

new Thread(new Runnable() {

    @Override
    public void run() {
        //implement
    }

});

我的IDE(intellij)建议使用:

new Thread(() -> {
    //implement
});

此保证是同一回事吗?我问这个是因为类Thread有多个构造函数。

4 个答案:

答案 0 :(得分:3)

是的,等效,请信任您的IDE!

关于多个构造函数:

  • 您只有一个构造函数参数->两种可能的构造函数实现
  • () -> { //implement }String吗? -->仅可以调用一个构造函数-> Runnable的构造函数,您也可以自行调用。

答案 1 :(得分:1)

是的,这是类似的事情。两种表示形式都将调用Thread(Runnable runnable)构造函数。

您问题中的后续代码

() -> { //implement }

是其前面代码中 匿名类 lambda表示形式

new Runnable() {
    @Override
    public void run() {
        //implement
    }
}

答案 2 :(得分:0)

相似,但不完全相同。在所有常规情况下,其行为均相同。一些方法访问其堆栈(跟踪)。这些可能会产生不同的结果。

答案 3 :(得分:0)

是的,是一样的。您可以使用lambda表达式,因为接口Runnable具有Annotation @FunctionalInterface。