Lambda表達式
lambda表達式,實際上就是匿名函數。
格式如下:
()里面是函數的參數,中間是箭頭, {}是函數的代碼塊,{}包含了函數的執行以及返回結果。
()->{}
新建線程
- 不使用lambda:
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("執行run()方法.");
}
};
使用lambda:
Runnable runnable = () -> System.out.println("執行run()方法.");
提交任務到線程池:
- 不使用lambda:
//實戰建議使用ThreadPoolExecutor自定義線程池,避免OOM,此處是為了方便示例
ExecutorService executor = Executors.newFixedThreadPool(5);
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("執行任務.");
}
};
executor.execute(runnable);
- 使用lambda:
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.execute(() -> {
System.out.println("執行任務.");
});
線程池異步並獲取結果
- 不使用lambda:
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(new Callable<String>() {
@Override
public String call() {
System.out.println("執行異步任務.");
return "異步結果";
}
});
使用lambda簡化:
ExecutorService executor = Executors.newFixedThreadPool(5);
Future<String> future = executor.submit(() -> {
System.out.println("執行異步任務.");
return "異步結果";
});
String result = future.get();