(學習筆記)什麼是synchronized?什麼是lock?
Lock 也就意味著是併發程式設計
那麼什麼是併發程式設計呢?
所謂併發程式設計是指在一臺處理器上"同時"處理多個任務。併發是在同一實體上的多個事件。多個事件在同一時間間隔發生。
Synchronized:
在多執行緒程式設計中,執行緒安全問題是一個最為關鍵的問題,
其核心概念就在於正確性,即當多個執行緒訪問某一共享、可變資料時,始終都不會導致資料破壞以及其他不該出現的結果。而所有的併發模式在解決這個問題時,採用的方案都是序列化訪問臨界資源 。在 Java 中,提供了兩種方式來實現同步互斥訪問:synchronized 和 Lock。
在上面一篇文章中,我們瞭解到如果一個程式碼塊被synchronized修飾了,當一個執行緒獲取了對應的鎖,並執行該程式碼塊時,其他執行緒便只能一直等待,等待獲取鎖的執行緒釋放鎖,而這裡獲取鎖的執行緒釋放鎖只會有兩種情況:
1)獲取鎖的執行緒執行完了該程式碼塊,然後執行緒釋放對鎖的佔有;
2)執行緒執行發生異常,此時JVM會讓執行緒自動釋放鎖。
那麼如果這個獲取鎖的執行緒由於要等待IO或者其他原因(比如呼叫sleep方法)被阻塞了,但是又沒有釋放鎖,其他執行緒便只能乾巴巴地等待,試想一下,這多麼影響程式執行效率。
相關推薦
fireflyLogin網絡工具設計模式——類工廠(學習筆記)
nbsp dict var class requests result ini 業務層 指向 一、RequestKeyID(業務id) 二、FireflyRequestHelper(對外提供初始化接口,提供網絡回調代理方法,供FireflySafeLoginHelper使用
網頁排版中的浮動和定位(學習筆記)
mage hidden alt images blog clear ul li -a www CSS中的浮動和定位 在了解CSS中的浮動和定位之前有必要先了解清楚標準流和脫離標準流的特性 雖然浮動和定位很重要,但是在以後的網頁寫作中,還是盡量少用,最好別亂用,不然後
數字和表達式(學習筆記)
解釋器 結果 2.0 1.0 解決 imp 整數 oat 小數 1、交互式Python解釋器可以當做非常強大的計算器使用,試試以下的例子: >>> 2 + 2 4 或者 >>> 53762 + 235253 28892
java中的try-catch-finnal異常處理(學習筆記)
不堪 java sha highlight 抽取 最終 throwable 關鍵字 學習筆記 一、異常概述 異常:Exception,是在運行發生的不正常情況。 原始異常處理: if(條件) { 處理辦法1 處理辦法2 處理辦法3} if(條件) { 處理辦法
1. PostgreSQL-安裝和基本配置(學習筆記)
安裝和配置 日常使用 buffer java、 note 安裝完成 for ora har 1 PostgreSQL簡介1.1 概述??PostgreSQL數據庫是目前功能最強大的開源數據庫,支持豐富的數據類型(如JSON和JSONB類型,數組類型)和自定義類型。而且它提供
一、作用域是什麽 (學習筆記)—— 《你不知道的JavaScript》
筆記 變量 如何 都是 先來 png 模擬 特定 function 因為全部都是文字不太好理解,所以盡可能地把所有的文字都畫成了圖,便於理解。 作用域是什麽 傳統編譯流程: JavaScript 引擎會在語法分析和代碼生成階段,通過特定的步驟,對運行性能進行優化
繼承(學習筆記) —— 《高級教程》
內部 name nbsp pan 返回 ima 初始 圖片 筆記 繼承 原型鏈 先不管上圖,先來看以下代碼: function Person() { this.personName = ‘person‘; } Person.prototyp
centos7掛載Windows共享文件夾(學習筆記)
分享圖片 共享文件 主機ip cif 文件 span 環境 絕對路徑 word centos7掛載windows共享文件夾 練習環境:centos7是安裝在臺式機的虛擬機,Windows共享文件夾是公司服務器的共享文件夾(已設置好的共享) 步驟 1. 設置掛載點:mkd
實驗吧-CTF-web-忘記密碼了&&這個看起來有點簡單 (學習筆記)
實驗環境 firefox BurpsuitePro-v1.6 sqlmap(kali) 忘記密碼了 題目為一個連結 開啟是一個輸入郵箱接收重置密碼的網頁,檢視原始碼發現管理員郵箱,vim格式,可能會有一個備份檔案.swp,還有一個重置密碼連結 構造一下url,改為http
Java:Future、Callable和FutureTask原理解析(學習筆記)
Future表示一個任務的生命週期,並提供了方法來判斷是否已經完成或取消,以及獲取任務的結果和取消任務等。Future介面: public interface Future<V> { boolean cancel(boolean mayInterruptIfRunni
實驗吧-CTF-web-頭有點大&&貌似有點難&&看起來有點難(學習筆記)
實驗環境 sqlmap(kali2.0) BurpsuitePro-v1.6 firefox 頭有點大 題目連結:http://www.shiyanbar.com/ctf/29 打開發現說缺少 .net framework9.9,但是沒有9.9版本,還要求在英格蘭地區
【學會Matlab走遍天下】如何畫正弦餘弦曲線和(學習筆記)
常用命令: clc %清屏 clear + 變數 %將變數擦除 註釋符:% 矩陣建立 邏輯語法 sum=0;i=1; while(i<=100) sum=sum+i;i=i+1; sum
如何在各類控制元件中輸入/輸出資料(學習筆記)
一、知識點描述 1、相關控制元件 ①下拉框(ComboBox) 顯示一個可編輯的文字框,其中包含一個允許值下拉列表。 ②日曆框(DateTimePick) 允許使用者選擇日期和時間,並以指定的格式顯示該日期和時間。 ③文字框(TextBox) 允許使用者輸入文字,並提供多行編輯和密碼字元掩碼功能
R-CNN論文詳解(學習筆記)
R-CNN:基於候選區域的目標檢測 Region proposals 基本概念(看論文前需要掌握的): 1.cnn(卷積神經網路):CNN從入門到精通(初學者) 2.Selective search:選擇性搜素 3.warp:圖形region變換 4.Supervised pre-t
基於Keras的LSTM多變數時間序列預測 (學習筆記)
本文翻譯自Jason Brownlee的部落格https://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/ 本部落格主要參考以下中文版部落格 https://blog.csdn.net/qq_280
快速沃爾什變換(FWT)(學習筆記)
學習了 F F T FFT
任意模數NTT(學習筆記)
F F T FFT
快速傅立葉變換(FFT)(學習筆記)
學習了一波 F F T FFT
動態DP(學習筆記)
一道模板題 動態 d p dp dp是貓學長髮
長鏈剖分(學習筆記)
很久很久以前 e r k k