摘要:今天就先到這里,大家可以看看這些內容的拓展記得點關注看更新,謝謝閱讀
前言
這是一個長篇博客,希望大家關注我并且一起學習java高并發(fā)
廢話不多說,直接開始
并行:多個線程同時處理多個任務
并發(fā):多個線程處理同個任務,不一定要同時
下面用圖來描述并行和并發(fā)的區(qū)別:
(實現和虛線表示兩個不同的線程)
是受保護的資源,可以被多個線程使用,但是每次只能有一個線程可以使用它
死鎖,饑餓,活鎖死鎖
因為有些資源的彼此交叉使用,大家都阻塞了線程,所有關于這個資源的線程全部無法工作
饑餓
一個資源被高優(yōu)先級別的線程不斷搶占著,導致低優(yōu)先級的線程無法工作
某一個線程一致占著資源不放,導致需要這個資源的線程無法正常工作
活鎖
多個線程都主動將資源釋放給他人使用,就會出現資源不斷在兩個線程中跳動,而沒有一個線程可以正常執(zhí)行
在并行程序中,就是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線程的基礎依舊不多說廢話 線程和進程 進程是操作系統運行的基礎,是一個程序運行的實體,windows上打開任務管理器就能看到進程線程是輕量級的進程,是程序執(zhí)行的最小單位,是在進程這個容器下進行的 線程基本操作 新建一個線程類有兩種方式...
摘要:前言本篇主要講解如何去優(yōu)化鎖機制或者克服多線程因為鎖可導致性能下降的問題線程變量有這樣一個場景,前面是一大桶水,個人去喝水,為了保證線程安全,我們要在杯子上加鎖導致大家輪著排隊喝水,因為加了鎖的杯子是同步的,只能有一個人拿著這個唯一的杯子喝 前言 本篇主要講解如何去優(yōu)化鎖機制或者克服多線程因為鎖可導致性能下降的問題 ThreadLocal線程變量 有這樣一個場景,前面是一大桶水,10個...
摘要:前言今天講的多線程的同步控制直接進入正題重入鎖重入鎖可以完全代替,它需要類來實現下面用一個簡單的例子來實現重入鎖以上代碼打印出來的是,可以說明也實現了線程同步它相比更加靈活,因為重入鎖實現了用戶自己加鎖,自己釋放鎖記得一定要釋放,不然其他線 前言 今天講的多線程的同步控制直接進入正題 ReentrantLock重入鎖 重入鎖可以完全代替synchronized,它需要java.util...
摘要:前言這篇主要來講解多線程中一個非常經典的設計模式包括它的基礎到拓展希望大家能夠有所收獲生產者消費者模式簡述此設計模式中主要分兩類線程生產者線程和消費者線程生產者提供數據和任務消費者處理數據和任務該模式的核心就是數據和任務的交互點共享內存緩 前言 這篇主要來講解多線程中一個非常經典的設計模式包括它的基礎到拓展希望大家能夠有所收獲 生產者-消費者模式簡述 此設計模式中主要分兩類線程:生產者...
閱讀 2653·2021-10-08 10:04
閱讀 2745·2021-09-06 15:02
閱讀 834·2019-08-30 13:50
閱讀 1563·2019-08-30 13:21
閱讀 2598·2019-08-30 11:15
閱讀 2124·2019-08-29 17:19
閱讀 1591·2019-08-26 13:55
閱讀 1270·2019-08-26 10:15