多執行緒的實現原理(二)

2021-09-19 03:59:33 字數 814 閱讀 4613

synchronized 的實現原理和應用

synchronized有三種方式來加鎖:1.修飾例項方法,兩個執行緒同時訪問同乙個例項物件中的方法 synchronized(this) 時候會發生有乙個會被阻塞。 

public class demo extends thread  catch (interruptedexception e) }}

public static void main(string args)

}

輸出結果:

a : 2019-05-15t11:40:40.882

b : 2019-05-15t11:40:50.887

可以發現b執行緒執行時間比a執行緒晚了10秒。

修改main方法 :

public static void main(string args)
輸出結果:

a : 2019-05-15t11:40:40.882

b : 2019-05-15t11:40:40.887

可以發現並沒有出現鎖同步的情況,兩個執行緒是併發進行的

2.修飾**塊,指定加鎖物件

HashMap實現原理(二) 多執行緒問題

本文的分析是基於jdk1.7原始碼 前奏 我們都知道,hashmap的初始容量是16,當hashmap中的值的size超過threshold時,會進行擴容操作 擴容會執行resize transfer方法 hashmap之所以執行緒不安全就是因為在resize transfer 的時候會不安全。re...

多執行緒 ThreadLocal原理(二)

一 用法 threadlocal用於儲存某個執行緒共享變數 對於同乙個static threadlocal,不同執行緒只能從中get,set,remove自己的變數,而不會影響其他執行緒的變數。1 threadlocal.get 獲取threadlocal中當前執行緒共享變數的值。2 threadl...

多執行緒 Synchronize實現原理

前言 synchronize實現實現同步最常用的方式,但是它的底層實現呢?如何實現 通過synchronize修飾的 塊,執行緒訪問需要申請鎖才能訪問,但是當乙個物件的鎖已經被乙個執行緒拿到了,其他執行緒就拿不到這個物件的鎖,必須進入等待阻塞的狀態。monitor物件,在同步 塊的開始會引入moni...