併發 並行傻傻分不清楚?

2021-09-10 08:49:55 字數 1414 閱讀 8587

今天,我們正在解決乙個問題:

同時的,同時的愚蠢的困惑?執行緒在其生命週期中經歷了什麼?

知識給你解答生活中所有困難的問題。

=concurrent和parallel==

併發是指在一定時間內,多工交替處理的能力。並行性是指同時處理多個任務的能力。

案例:當乙個商場的銷售員需要面對許多顧客時,有些顧客要求**,有些顧客要求質量。這時,業務員需要不斷地回答客戶,不斷地改變話題,記住前面的話題,以便他回答。這種方式可以理解為併發的。如果有許多銷售人員對應多個客戶,那麼許多銷售人員可以同時回答客戶的問題。這條路是平行的。

=thread lifetime=

執行緒是cpu排程和分配的基本單元。執行緒可以有自己的操作堆疊、程式計數器、本地變數表和其他資源。它與同一程序中的其他執行緒共享程序的所有資源。

建立執行緒有三種方法。首先從執行緒類繼承,如下所示:

第二種方式是實現runnable介面,如下所示:

public class handlerthread implements runnable 

}

建議使用第二種方法,因為繼承執行緒類不符合richter的替換原則。實現可執行的介面可以使程式設計更加靈活,公開的細節更少。

public class demo implements callable

@override

public string call() throws exception

}

第三種方法使用可呼叫介面,如下所示:

可呼叫介面和未來介面的區別在於:

callable指定call(),runnable指定run()。

可呼叫任務可以在執行後返回值,而可執行任務不能返回值。

呼叫()方法可以引發異常,而run()方法不能引發異常。

執行可呼叫任務將生成乙個未來物件,該物件表示非同步計算的結果。它提供了一種檢查計算是否已完成、等待計算完成以及檢索計算結果的方法。通過未來的物件,我們可以了解任務的效能,取消任務的執行,並獲得任務執行的結果。

callable是乙個類似於runnable的介面。實現可呼叫介面的類和實現可執行的類是可以由其他執行緒執行的任務。

執行緒有五個生命週期,如下所示:

執行緒的生命週期狀態為:新狀態、就緒狀態、執行狀態、阻塞狀態和終止狀態。

我在這裡說的是建立執行緒的形式。建立執行緒的本質是實際建立乙個可執行的物件(您可以看到相關的源**,執行緒實現可執行的介面,並且只有目標分配是在內部完成的)。在run方法中,仍然執行目標run方法)。執行緒的start方法是真正的執行緒建立方法(在內部呼叫native create square)。為什麼不建議繼承執行緒,因為它向外部世界公開了更多的細節?非常感謝你的想法。

MVP, MVC, MVVM, 傻傻分不清楚

最近 mvc model view controller 和 mvvm model view viewmodel 在微軟圈成為顯學,asp.net mvc 和 wpf 的 prism mvvm framework 功不可沒,mvc 和 mvvm 在概念上都是基於分層的,將呈現 presentatio...

物件,陣列,傻傻分不清楚

有段時間寫 總將物件和陣列區分不開,當然,可能是我的基礎不太紮實吧,今天將單獨將物件和陣列拿出來溜溜。首先來說一下物件,作為乙個沒有物件的人,這時候就需要用js來自己new乙個物件了 1.物件 object 什麼是物件?物件是一種引用型別,物件的值就是引用型別的例項。建立物件的方法?1 new乙個物...

各種定位 css 傻傻分不清楚

定位是網頁設計中很重要且常用的基礎知識。學習定義不是乙個簡單的事情,它需要反覆的實踐和體會。這裡總結了一些定位的基礎概念和常見例子。總結了一些css 中關於定位的問題,和陷阱。主要內容包括 相對定位,絕對定位,fixed,浮動。四個偏移量 top bottom left right 分別定義相對於參...