Java高並發-概念

來源:互聯網
上載者:User

標籤:mic   2.4   3.1   cal   無法獲得   用戶端   原因   syn   執行   

一、為什麼需要並行

業務要求

  • http處理多個用戶端請求
  • java虛擬機器啟動多個線程
  • 進程開銷比線程大的多

效能

  • 多線程在多核系統比單線程要好的多

摩爾定律失效

二、幾個重要概念2.1 同步和非同步

synchronous,asynchronous

2.2 並發和並行

concurrency,parallelism

2.3 臨界區

臨界區用來表示一種公用資源或者說是共用資料,可以被多個線程使用。但是每一次,只能有一個線程使用它,一旦臨界區資源被佔用,其他線程要想使用這個資源,就必須等待。

2.4 阻塞和非阻塞

blocking,non-blocking

阻塞和非阻塞通常用來形容多線程音的相互影響。比如一個線程佔用了臨界區資源,那麼其它所有需要這個資源的線程就必須在這個臨界區中進行等待,等待會導致線程掛起。這種情況就是阻塞。此時,如果佔用資源的線程一直不願意釋放資源,那麼其它所有阻塞在這個臨界區上的線程都不能工作。

非阻塞允許多個線程同時進入臨界區。

2.5 死結、饑餓和活鎖

deadlock,starvation,livelock

死結:搶佔資源而不釋放

饑餓是指某一個或者多個線程因為種種原因無法獲得所需要的資源,導致一直無法執行。比如某線程因優先順序低擷取不到資源。

活鎖:電梯遇人

2.6 並行的層級

阻塞:當一個線程進入臨界區後,其他線程必須等待

無障礙(Obstruction-Fee):

  • 無障礙是一種最弱的非阻塞高度
  • 自由出入臨界區
  • 無競爭時,有限步內完成操作
  • 有競爭時,復原資料

無鎖(Lock-Fee):

  • 是無障礙的
  • 保證有一個線程可以勝出
// 典型的無鎖代碼while(!atomicVar.compareAndSet(localVar, localVar+1)) {    localVar = atomicVar.get();}

無等待(Wait-Free):

  • 無鎖的
  • 要求所有的線程都必須在有限步內完成
  • 無饑餓的
三、2個重要的定理3.1 Amdahl定律(阿姆達定律)

3.2 Gustafson定律(古斯塔夫森)

Java高並發-概念

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.