Java學習-080-多執行緒13:利用Lambda表示式實現執行緒類的定義
阿新 • • 發佈:2021-06-22
用較小的程式碼量可以實現的執行緒定義,可以通過 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 [Lambda0] 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 實現。