国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java高并發(fā)之從零到放棄(一)

luoyibu / 292人閱讀

摘要:今天就先到這里,大家可以看看這些內容的拓展記得點關注看更新,謝謝閱讀

前言

這是一個長篇博客,希望大家關注我并且一起學習java高并發(fā)
廢話不多說,直接開始

并行和并發(fā)

并行:多個線程同時處理多個任務
并發(fā):多個線程處理同個任務,不一定要同時

下面用圖來描述并行和并發(fā)的區(qū)別:
(實現和虛線表示兩個不同的線程)

臨界區(qū)

是受保護的資源,可以被多個線程使用,但是每次只能有一個線程可以使用它

死鎖,饑餓,活鎖

死鎖
因為有些資源的彼此交叉使用,大家都阻塞了線程,所有關于這個資源的線程全部無法工作
饑餓
一個資源被高優(yōu)先級別的線程不斷搶占著,導致低優(yōu)先級的線程無法工作
某一個線程一致占著資源不放,導致需要這個資源的線程無法正常工作
活鎖
多個線程都主動將資源釋放給他人使用,就會出現資源不斷在兩個線程中跳動,而沒有一個線程可以正常執(zhí)行

JMM(java內存模型)

在并行程序中,就是int i =1都變得及其復雜

下面來看下JMM的三個特性

1. 原子性

和數據庫的原子性一樣,是指一個操作是不可中斷的,即使是在多個線程一起執(zhí)行的時候,一個操作一旦開始,就不會被其它線程干擾

2. 可見性

當一個線程修改了某個共享的值,其它線程是否立即知道這個修改。這個問題在串行程序中是沒有的
在并行中實現可見性需要滿足以下兩個條件:

1.線程修改后的共享變量的值能夠及時從工作內存刷新到主內存中
2.其他線程能夠及時把共享變量的最新值從主內存更新到自己的工作內存中

因此synchronized實現了可見性和原子性:
對于synchronized的操作JMM有兩條規(guī)定:

1.線程解鎖前,必須把共享變量的最新值刷新到主內存
2.線程加鎖時,將清空工作內存中共享變量的值,從而使用共享變量時需從主內存中重新讀取最新的值(加鎖與解鎖需要同一把鎖)

3.有序性

對于串行程序來說,按照順序進行任務是必然的,但是在并行中卻不一樣了
比如1號線程要執(zhí)行兩個變量的賦值,但是第一個變量上了鎖,要等待解鎖,那么它可能就會先對第二個變量進行賦值(這就是指令重排,是jmm特性,可以提高性能)

這時候2號線程去調用一號線程的第一個變量,但1號線程還沒有來得及對它賦值,那么這時候就沒有保證有序性了。那么為了保證有序性就要用到volatile關鍵字。

今天就先到這里,大家可以看看這些內容的拓展
記得點關注看更新,謝謝閱讀

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68058.html

相關文章

  • java并發(fā)之從零到放棄(二)

    摘要:可以用代替可以用代替定義的對象的值是不可變的今天就先到這里,大家可以看看這些內容的拓展記得點關注看更新,謝謝閱讀 前言 java高并發(fā)第二篇講的是java線程的基礎依舊不多說廢話 線程和進程 進程是操作系統運行的基礎,是一個程序運行的實體,windows上打開任務管理器就能看到進程線程是輕量級的進程,是程序執(zhí)行的最小單位,是在進程這個容器下進行的 線程基本操作 新建一個線程類有兩種方式...

    cloud 評論0 收藏0
  • java并發(fā)之從零到放棄(四)

    摘要:前言本篇主要講解如何去優(yōu)化鎖機制或者克服多線程因為鎖可導致性能下降的問題線程變量有這樣一個場景,前面是一大桶水,個人去喝水,為了保證線程安全,我們要在杯子上加鎖導致大家輪著排隊喝水,因為加了鎖的杯子是同步的,只能有一個人拿著這個唯一的杯子喝 前言 本篇主要講解如何去優(yōu)化鎖機制或者克服多線程因為鎖可導致性能下降的問題 ThreadLocal線程變量 有這樣一個場景,前面是一大桶水,10個...

    Alex 評論0 收藏0
  • java并發(fā)之從零到放棄(三)

    摘要:前言今天講的多線程的同步控制直接進入正題重入鎖重入鎖可以完全代替,它需要類來實現下面用一個簡單的例子來實現重入鎖以上代碼打印出來的是,可以說明也實現了線程同步它相比更加靈活,因為重入鎖實現了用戶自己加鎖,自己釋放鎖記得一定要釋放,不然其他線 前言 今天講的多線程的同步控制直接進入正題 ReentrantLock重入鎖 重入鎖可以完全代替synchronized,它需要java.util...

    FrozenMap 評論0 收藏0
  • java并發(fā)之從零到放棄(五)

    摘要:前言這篇主要來講解多線程中一個非常經典的設計模式包括它的基礎到拓展希望大家能夠有所收獲生產者消費者模式簡述此設計模式中主要分兩類線程生產者線程和消費者線程生產者提供數據和任務消費者處理數據和任務該模式的核心就是數據和任務的交互點共享內存緩 前言 這篇主要來講解多線程中一個非常經典的設計模式包括它的基礎到拓展希望大家能夠有所收獲 生產者-消費者模式簡述 此設計模式中主要分兩類線程:生產者...

    meislzhua 評論0 收藏0
  • 前端從零開始系列

    摘要:只有動手,你才能真的理解作者的構思的巧妙只有動手,你才能真正掌握一門技術持續(xù)更新中項目地址求求求源碼系列跟一起學如何寫函數庫中高級前端面試手寫代碼無敵秘籍如何用不到行代碼寫一款屬于自己的類庫原理講解實現一個對象遵循規(guī)范實戰(zhàn)手摸手,帶你用擼 Do it yourself!!! 只有動手,你才能真的理解作者的構思的巧妙 只有動手,你才能真正掌握一門技術 持續(xù)更新中…… 項目地址 https...

    Youngdze 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<