我只是尝试使用方法引用来创建线程。
new Thread(thisMonitor::method1).start();
那么如何解释它为什么有效。
它的工作原理和 lambda 一样吗?
最佳答案
您正在使用的Thread
构造函数接受Runnable
:
public Thread(Runnable target)
Runnable
是一个函数式接口(interface),其方法不接受参数且不返回值:
public abstract void run()
如果method1
是这样的方法,则方法引用thisMonitor::method1
可以作为Runnable
的实现。
您还可以使用 lambda 表达式来代替方法引用:
new Thread(() -> thisMonitor.method1()).start();
关于java - 方法引用如何与线程一起使用? `new Thread(foo::bar)`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70859531/