首頁>Club>
4
回覆列表
  • 1 # 白糖醃番茄

    你想象一下如果有兩個CPU,同時都在執行指令,而CPU從記憶體拿資料處理完再回寫這個過程是要花時間的。比如同時對變數i進行增一的超做,兩個CPU同時讀取都得到0,都進行加一操作得到1,都將1回寫到變數i,完成後變數值為一。實際上我們需要得到的是而。因為實際上遞增了兩次,兩個CPU各一次。這就是併發需要處理的問題之一。

  • 2 # 網際網路IT資訊

    Java的多執行緒併發,如果需要系統的瞭解,那麼就要將以下幾個方面進行了解,包括:

    1)執行緒的六大狀態的轉換:

    知道這個就能從原理上了解執行緒,那麼在做多執行緒程式設計時,才能更加了解。

    2) Java提供了一些執行緒池,

    你得了解這些執行緒池適用於哪些場景,現在基本都不需要自己寫執行緒池了,都用Java自帶的。比如:

    第一種:Executors.newCacheThreadPool():

    可快取執行緒池:先檢視池中有沒有以前建立的執行緒,如果有,就 reuse.如果沒有,就建一個新的執行緒加入池中,快取型池子通常用於執行一些生存期很短的非同步型任務

    第二種:Executors.newFixedThreadPool(int n):

    建立一個可重用固定個數的執行緒池,以共享的無界佇列方式來執行這些執行緒。

    第三種:Executors.newScheduledThreadPool(int n):

    建立一個定長執行緒池,支援定時及週期性任務執行

    第四種:Executors.newSingleThreadExecutor():

    建立一個單執行緒化的執行緒池,它只會用唯一的工作執行緒來執行任務,保證所有任務按照指定順序執行。

    3)同時Java對於多執行緒的爭搶資源,提供了一些解決辦法,

    比如:synchronized、ReetranLock

    基於以上問題,我們寫了如下幾篇文章進行了詳細解釋,還包括程式碼實戰,供大家學習:

    Java:執行緒的六大狀態、基於程式碼實戰的執行緒建立及六個常用方法

    Java併發程式設計:基於程式碼實戰的4種執行緒池和緩衝佇列BlockingQueue

    Java:執行緒併發問題、基於程式碼實戰的4種鎖機制及多執行緒協作程式設計

    Java:重入鎖ReentranLock詳解、程式碼實戰、與Synchronized對比

    京東的一道A、B執行緒面試題:兩個執行緒迴圈順序列印A、B(有程式碼)

  • 3 # 程式設計字典

    Java是一種 多執行緒程式語言 ,這意味著我們可以使用Java開發多執行緒程式。多執行緒程式包含兩個或多個可以同時執行的部分,每個部分可以同時處理不同的任務,特別是在計算機有多個CPU時,可以最佳化使用可用資源。

    根據定義,多工就是多個程序共享公共處理資源(如CPU)的時候。多執行緒將多工的思想擴充套件到可以將單個應用程式中的特定操作細分為單獨執行緒的應用程式。每個執行緒都可以並行執行。作業系統不僅在不同的應用程式之間劃分處理時間,而且在應用程式內的每個執行緒之間劃分處理時間

    多執行緒技術使您能夠以同一程式中多個活動同時進行的方式進行寫入。

    java併發:http://codingdict.com/article/8621

  • 中秋節和大豐收的關聯?
  • 有人在地鐵或公交上旁若無人噼啪玩核桃,刷金剛擼星月,你怎麼看?