java 线程由浅入深_由浅入深,Java 并发编程中的 Synchronized(一)
synchronized 作用
synchronized 關鍵字是 Java 并發編程中線程同步的常用手段之一。
1.1 作用:
確保線程互斥的訪問同步代,鎖自動釋放,多個線程操作同個代碼塊或函數必須排隊獲得鎖,
保證共享變量的修改能夠及時可見,獲得鎖的線程操作完畢后會將所數據刷新到共享內存區;
不解決重排序,但保證有序性。
1.2 用法:
修飾實例方法synchronized 關鍵詞作用在方法的前面,用來鎖定方法,其實默認鎖定的是 this 對象。
修飾靜態方法synchronized 還是修飾在方法上,不過修飾的是靜態方法,等價于鎖定的是 Class 對象。
修飾代碼塊用法是在函數體內部對于要修改的參數區間用 synchronized 來修飾,相比與鎖定函數這個范圍更小,可以指定鎖定什么對象。
總結:
synchronized 修飾的實例方法,多線程并發訪問時,只能有一個線程進入,獲得對象內置鎖,其他線程阻塞等待,但在此期間線程仍然可以訪問其他方法。
synchronized 修飾的靜態方法,多線程并發訪問時,只能有一個線程進入,獲得類鎖,其他線程阻塞等待,但在此期間線程仍然可以訪問其他方法。
synchronized 修飾的代碼塊,多線程并發訪問時,只能有一個線程進入,根據括號中的對象或者是類,獲得相應的對象內置鎖或者是類鎖
每個類都有一個類鎖,類的每個對象也有一個內置鎖,它們是互不干擾的,也就是說一個線程可以同時獲得類鎖和該類實例化對象的內置鎖,當線程訪問非 synchronzied 修飾的方法時,并不需要獲得鎖,因此不會產生阻塞。
總結
以上是生活随笔為你收集整理的java 线程由浅入深_由浅入深,Java 并发编程中的 Synchronized(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql多实例配置安装_MySQL多实
- 下一篇: 一阶系统单位阶跃响应的特点_一阶系统的阶