关于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之后特性
00 -
悟空
2019-08-17
是的,这是lambda表达式,本质就是新建了一个Runnable对象,只不过是代码写法不同,和我们新建一个类,然后去implement Runnable接口的原理是一样。
新建一个类然后implement Runnable接口,确实也可以调用它的run()方法,这个run方法和一个类的普通方法是一样的,但是不具备开启新线程的功能。如果要新开线程,需要调用start()方法。
012019-08-17 -
无心铁憨憨
2019-08-17
是创建了一个Runnable对象,然后在主函数中调用它的run方法,通过控制台打印输出得知,直接调用run方法打印出的线程名字是main,而创建一个Thread传入runnable对象并调用start方法打印的线程名字是Thread-0,得出的结论是,直接调用run方法是无法开启一个新的线程的,就跟java中的普通方法调用是一样的,想开启一个线程必须调用Thread类的start方法
012019-08-17
相似问题