Java關鍵字
1. final
- 修飾類:表示這個類不能被繼承,final類的所有成員方法都被隱式指定爲final方法
- 修飾方法:表示這個類不能被重寫(override)
- 修飾基本數據類型變量:變量的值一旦被初始化後,便不能改變。可以先聲明再初始化,也可以在聲明的同時直接初始化。
- 修飾引用數據類型變量:引用在初始化後,便不能指向其他引用。可以先聲明再初始化,也可以在聲明的同時直接初始化。
2. synchronized
- 概述:使用synchronized關鍵字修飾一個方法或者一個代碼塊時,能夠保證在同一時刻最多隻有一個線程執行該段代碼。
- 注意:使用synchronized關鍵字修飾靜態方法或者代碼塊,執行該段代碼時需要獲取類鎖;使用synchronized關鍵字修飾成員方法,執行該段代碼時需要獲取相應的對象鎖。
3. volatile
- 保證內存可見性
- 概述: 具體講就是線程每次讀一個變量的值時,必須從主內存刷新最新的值;線程每次寫一個變量時,必須立即同步到主內存中
- 原理:讀變量值時保證read, load, use這三個操作連續出現;寫變量時保證assign, store, write這三個操作連續出現
- 防止指令重排序
- 概述:通過插入“內存屏障”來防止指令重排序