簡體   English   中英

Java8中的lambda表達式是否執行多線程?

[英]Are lambda-expressions in Java8 executed multi threaded?

在Java8中,引入了lambda表達式 這個問題是關於何時執行並行lambda。

在Java8之前, Callable -classes是一次執行多個線程的一種方法。 可以將Callables與Executor -classes一起使用來執行。 假設我使用固定線程池 ,使用3作為活動處理任務的數量。 我們假設我有8個任務。 固定線程池將啟動前三個任務,並在完成后,啟動下一個任務,直到完成所有8個任務。

如果我將我的任務實現為Java8-lambdas,會發生什么? 全部8個會立刻開始嗎? 還是順序? 還是以任何聰明的方式?

特別是,它們是否與調用者在同一個線程中運行(不使用Exeuctor)? 就其本質而言,我猜lambdas可以很容易地在另一個線程中執行。

Runnable r = () -> System.out.println("hello");

相當於

Runnable r = new Runnable() {
    @Override
    public void run() {
        System.out.println("hello")
    }
};

並且它不會改變runnable的執行方式。 如果將runnable提交給線程池,則線程池將執行它,無論您使用什么創建runnable:lambda,匿名類或頂級類。 最后,你定義的是Runnable的一個實例,這是唯一重要的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM