真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷-創(chuàng)新互聯(lián)

前置知識(shí)

網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給成都創(chuàng)新互聯(lián)公司一個(gè)展示的機(jī)會(huì)來證明自己,這并不會(huì)花費(fèi)您太多時(shí)間,或許會(huì)給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。
  • 了解Java基本語法
  • 了解多線程基本知識(shí)

知識(shí)介紹

  • Synchronized簡(jiǎn)介:作用、地位、不控制并發(fā)的后果
  • 兩種用法:對(duì)象鎖類鎖
  • 多線程訪問同步方法的7種情況:是否是static、Synchronized方法等
  • Synchronized的性質(zhì):可重入、不可中斷
  • 原理:加解鎖原理、可重入原理、可見性原理
  • Synchronized的缺陷:效率低、不夠靈活、無法預(yù)判是否成功獲取鎖
  • 常見問題:

  • 如何選擇Lock或Synchronized等
  • 如何提高性能、JVM如何解決那個(gè)線程獲取鎖等

Synchronized簡(jiǎn)介

作用

官方解釋

同步方法支持一種簡(jiǎn)單的策略來防止線程干擾和內(nèi)存一致性錯(cuò)誤:如果一個(gè)對(duì)象對(duì)多個(gè)線程可見,則對(duì)該對(duì)象變量的所有讀取或?qū)懭攵际峭ㄟ^同步方法完成的。

通俗易懂的解釋

能夠保證在同一時(shí)刻最多只有一個(gè)線程執(zhí)行該段代碼,以達(dá)到保證并發(fā)安全的效果。

地位

  • Synchronized是Java的關(guān)鍵字,被Java語言原生支持

代碼演示:不使用并發(fā)手段的后果演示

代碼實(shí)戰(zhàn):兩個(gè)線程同時(shí)a++,最后結(jié)果會(huì)比預(yù)計(jì)的少

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

原因

count++,它看上去只是一個(gè)操作,實(shí)際上包含了三個(gè)動(dòng)作:

  1. 讀取count
  2. 將count加1
  3. 將count的值寫入到內(nèi)存中
  • 最基本的互斥同步手段
  • 并發(fā)編程中的元老級(jí)角色,是并發(fā)編程的必學(xué)內(nèi)容

Synchronized的兩個(gè)用法

對(duì)象鎖

包括方法鎖(默認(rèn)鎖對(duì)象為this當(dāng)前實(shí)例對(duì)象)和同步代碼塊鎖(自己指定鎖對(duì)象)

代碼塊形式:手動(dòng)指定鎖對(duì)象

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

方法鎖形式:synchronized修飾普通方法,鎖對(duì)象默認(rèn)為this

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

?類鎖

概念(重要):Java類可能有很多個(gè)對(duì)象,但只有1個(gè)Class對(duì)象

本質(zhì):所以所謂的類鎖,不過是Class對(duì)象的鎖而已

用法和效果:類鎖只能在同一時(shí)刻被一個(gè)對(duì)象擁有

形式1:synchronized加載static方法上

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

形式2:synchronized(*.class)代碼塊

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

?消失的請(qǐng)求解決方案

不使用并發(fā)手段會(huì)有什么后果?如何解決?

?解決問題

兩個(gè)線程同時(shí)a++,最后結(jié)果會(huì)比預(yù)計(jì)的少

原因

count++,它看上去知識(shí)一個(gè)操作,實(shí)際上包含了三個(gè)動(dòng)作

  1. 讀取count
  2. 將count+1
  3. 將count的值寫入到內(nèi)存中

方法一

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

?方法二

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

?方法三

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

七種常見情況之123

多線程訪問同步方法的7種情況

  1. 兩個(gè)線程同時(shí)訪問一個(gè)對(duì)象的同步方法
  2. 兩個(gè)線程訪問的是兩個(gè)對(duì)象的同步方法
  3. 兩個(gè)線程訪問的是synchronized的靜態(tài)方法
  4. 同時(shí)訪問同步方法與非同步方法
  5. 訪問同一個(gè)對(duì)象的不同的普通同步方法
  6. 同時(shí)訪問靜態(tài)synchronized和非靜態(tài)synchronized方法
  7. 方法拋異常后,會(huì)釋放鎖

情況一:

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

?情況二:

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

?情況三:

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

?情況四:

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

?情況五:

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

?情況六:

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

情況七:

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

?7種情況總結(jié)

?3點(diǎn)核心思想

  1. 一把鎖只能同時(shí)被一個(gè)線程獲取,沒有拿到鎖的線程必須等待(對(duì)應(yīng)第1、5種情況)
  2. 每個(gè)實(shí)例都對(duì)應(yīng)有自己的一把鎖,不同實(shí)例之間互不影響;例外:鎖對(duì)象鎖是*.class以及Synchronized修飾的是static方法的時(shí)候,所有對(duì)象共用同一把鎖(對(duì)應(yīng)第2、3、4、6種情況);
  3. 無論是方法正常執(zhí)行完畢或者方法拋出異常,都會(huì)釋放鎖(對(duì)應(yīng)第7種情況)

Synchronized缺陷

  • 效率低:鎖的釋放情況少、試圖獲得鎖時(shí)不能設(shè)定超時(shí)、不能中斷一個(gè)正在試圖獲得鎖的線程
  • 不夠靈活(讀寫鎖更靈活):加鎖和釋放的時(shí)機(jī)單一,每個(gè)鎖僅有單一的條件(某個(gè)對(duì)象),可能是不夠的
  • 無法知道是否成功獲取到鎖

一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷

?常見面試問題

1、使用注意點(diǎn):鎖對(duì)象不能為空、作用域不宜過大、避免死鎖

2、如何選擇Lock和Synchronized關(guān)鍵字?

3、多線程訪問同步方法的各種具體情況

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


新聞名稱:一文看透Java高并發(fā):Synchronized鎖的性質(zhì)、原理及其缺陷-創(chuàng)新互聯(lián)
鏈接地址:http://weahome.cn/article/isosd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部