Question: I have this code:

```
new Thread(new Runnable() {

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

});

```

My IDE(intellij) suggest to use:

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

```

This guarantee is the same thing? I ask this because class [Thread](https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#Thread()) has multiple constructors.

Answer: 
Yes, that is equivalent, trust your IDE! 

Regarding multiple constructors: 

* you have exactly one constructor argument -> two possible constructor implementations
* is `() -> { //implement }` a `String`? - **no** -> only one possible constructor to call -> the one for `Runnable`, which you would call on your own as well.
It is similar, but not the exactly same thing. It behaves the same way in all the regular cases. Some methods access their stack (trace). Those might yield different results.