面试题答案
一键面试代码示例
public class LambdaThreadExample {
public static void main(String[] args) {
// 使用Lambda表达式创建并启动新线程
Thread thread = new Thread(() -> {
System.out.println("新线程正在运行:" + Thread.currentThread().getName());
});
thread.start();
}
}
Runnable接口的作用
在Java中,Runnable
接口是一个函数式接口,它只包含一个抽象方法run()
。当我们创建线程时,需要一个任务来定义线程要执行的操作,Runnable
接口就提供了这样一个规范,实现Runnable
接口的run()
方法就定义了线程的执行逻辑。在上述Lambda表达式创建线程的代码中,虽然没有显式地实现Runnable
接口,但实际上() -> { System.out.println("新线程正在运行:" + Thread.currentThread().getName()); }
这个Lambda表达式就相当于实现了Runnable
接口的run()
方法。
Lambda表达式相比传统方式创建线程的优势
- 代码简洁:传统方式创建线程需要创建一个类实现
Runnable
接口,然后实例化该类并将其传递给Thread
构造函数。而Lambda表达式可以直接在创建Thread
对象时定义线程的执行逻辑,无需额外定义类,减少了样板代码。例如传统方式:
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("新线程正在运行:" + Thread.currentThread().getName());
}
}
public class TraditionalThreadExample {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
}
}
对比可见,Lambda表达式方式代码更加简洁。 2. 提高可读性:Lambda表达式将代码逻辑紧凑地表达出来,对于简单的线程任务,更易于理解其执行的内容,特别是在代码中线程创建较多的情况下,能让代码结构更加清晰。