Java中可用Lambda表达式实现Runnable接口,因其是只含run()方法的函数式接口;写法为() -> {逻辑},单行可省略大括号,但需用try-catch处理受检异常。

Java 中用 Lambda 表达式实现 Runnable 接口非常简单,因为 Runnable 是典型的函数式接口(只有一个抽象方法 run()),可以直接用 Lambda 替代匿名内部类。
为什么能用 Lambda?
Runnable 接口只定义了一个抽象方法:public void run()
这满足函数式接口的定义,所以编译器允许用 Lambda 表达式来实例化它。
怎么写 Lambda 版本的 Runnable?
Lambda 表达式格式为:() -> { 方法体 },括号里没有参数(因为 run() 无参),箭头后是执行逻辑。
- 最简写法(单行语句,省略大括号和分号):
Runnable task = () -> System.out.println("Hello from Lambda"); - 多行逻辑(需加大括号):
Runnable task = () -> {<br> System.out.print("Running...");<br> Thread.sleep(100); // 注意异常处理<br>}; - 实际启动线程:
new Thread(() -> System.out.println("Task executed")).start();
注意异常处理
Lambda 内不能直接抛出受检异常(如 InterruptedException),因为 run() 方法签名不声明异常。如果需要调用可能抛异常的方法,必须在 Lambda 内用 try-catch 包裹:
- 错误写法(编译失败):
() -> Thread.sleep(100) - 正确写法:
() -> { try { Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } }
和传统写法对比更直观
传统匿名内部类:
立即学习“Java免费学习笔记(深入)”;
Runnable r = new Runnable() {<br> public void run() {<br> System.out.println("Hello");<br> }<br>};
等价的 Lambda:
Runnable r = () -> System.out.println("Hello");
代码量减少,语义更清晰,可读性明显提升。


















