用较小的代码量可以实现的线程定义,可以通过 Lambda 表达式进行线程类的实现。
源代码示例如下所示:
package com.fanfengping.demo; import lombok.extern.slf4j.Slf4j; /** * 利用Lambda表达式进行线程类的实现定义 */ @Slf4j public class Demo06LambdaRunnable { public static void main(String[] args) { for (int i = 0; i < 6; i++) { String name = "Lambda " + i; Runnable runnable = () -> { for (int j = 0; j < 3; j++) { log.info("线程 {} ,运行 {}", Thread.currentThread().getName(), j); } }; new Thread(runnable, name).start(); } } }
执行程序,输出结果如下所示:
[Lambda 3] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 3 ,运行 0 [Lambda 0] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 0 ,运行 0 [Lambda 3] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 3 ,运行 1 [Lambda 3] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 3 ,运行 2 [Lambda 0] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 0 ,运行 1 [Lambda 1] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 1 ,运行 0 [Lambda 2] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 2 ,运行 0 [Lambda 1] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 1 ,运行 1 [Lambda 2] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 2 ,运行 1 [Lambda 1] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 1 ,运行 2 [Lambda 2] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 2 ,运行 2 [Lambda 5] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 5 ,运行 0 [Lambda 5] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 5 ,运行 1 [Lambda 4] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 4 ,运行 0 [Lambda 4] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 4 ,运行 1 [Lambda 4] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 4 ,运行 2 [Lambda 0] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 0 ,运行 2 [Lambda 5] INFO com.fanfengping.demo.Demo06LambdaRunnable - 线程 Lambda 5 ,运行 2
使用 Lamdba 表达式实现线程定义,代码量较少;但对于业务逻辑复杂的线程实现,不建议采用 Lambda 实现。