关于Runnable的问题

来源:4-1 启动线程

hellocp7

2019-08-17

老师你好,我想请教一下

Runnable runnable = () -> {
    System.out.println(Thread.currentThread().getName());
};

这段代码中是新建了一个Runnable对象是么?那他和我们新建一个类,然后去implement Runnable接口是一样的?我看到下面你有直接调用runnable.run()方法,那是否意味着我新建一个类implement Runnable接口的方式也可以调用run()方法?谢谢。

写回答

3回答

chenlianlian

2019-10-11

你可以具体去看下lambda表达式java8之后特性

0
0

悟空

2019-08-17

是的,这是lambda表达式,本质就是新建了一个Runnable对象,只不过是代码写法不同,和我们新建一个类,然后去implement Runnable接口的原理是一样。

新建一个类然后implement Runnable接口,确实也可以调用它的run()方法,这个run方法和一个类的普通方法是一样的,但是不具备开启新线程的功能。如果要新开线程,需要调用start()方法。

0
1
hellocp7
好的。谢谢老师。
2019-08-17
共1条回复

无心铁憨憨

2019-08-17

是创建了一个Runnable对象,然后在主函数中调用它的run方法,通过控制台打印输出得知,直接调用run方法打印出的线程名字是main,而创建一个Thread传入runnable对象并调用start方法打印的线程名字是Thread-0,得出的结论是,直接调用run方法是无法开启一个新的线程的,就跟java中的普通方法调用是一样的,想开启一个线程必须调用Thread类的start方法

0
1
hellocp7
了解了。谢谢你
2019-08-17
共1条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程