日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

java模拟数据库压测_写并发压测 java 脚本你必须会的 3 个类

發布時間:2025/3/19 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java模拟数据库压测_写并发压测 java 脚本你必须会的 3 个类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

性能測試做到后面,一些特殊的場景利用常用的現成工具滿足不了需求,所以你需要學習java寫一些特定協議的壓測腳本,那你不得不研究多線程或線程池,而此時你也一定會遇到java并發編程中的幾個類,今天重點講解這3個類,CountDownLanch、CyclicBarrier、Semaphore,希望大家以后看到的時候知道是干嘛用的。

接下來,我就最近學習的成果,下面和大家舉例子講解一下,幫助理解。當然篇幅原因,完整的java代碼例子

1、CountDownLanch

場景

工作中往往會遇到需要異步處理的任務,此時我們就會利用多線程的方式去處理,即啟動子線程去執行任務,而此時主線程阻塞,等待所有的子線程完成任務后,再去做一些匯總統計工作。

CountDownLanch 是一個倒數計數器, 給一個初始值(>=0), 然后每一次調用countDown就會減1, 這很符合等待多個子線程結束的場景: 一個線程結束的時候, countDown一次, 直到所有的線程都countDown了 , 那么所有子線程就都結束了。

先看看CountDownLanch提供的方法。

await: 會阻塞等待計數器減少到0位置. 帶參數的await是多了等待時間。

countDown: 將當前的計數減1。

getCount(): 返回當前的計數。

顯而易見, 我們只需要在子線程執行之前, 賦予初始化countDownLanch, 并賦予線程數量為初始值。

每個線程執行完畢的時候, 就countDown一下。主線程只需要調用await方法, 可以等待所有子線程執行結束。

2、CyclicBarrier

場景

我們在做壓測的時候,如要真正的并發,那么在創建線程成功后需要等待其他線程也創建好了,一起等著,同時發送請求,此時就用到了CyclicBarrier。

CyclicBarrier的字面意思是可循環使用(Cyclic)的屏障(Barrier)。它要做的事情是,讓一組線程到達一個屏障(也可以叫同步點)時被阻塞,直到最后一個線程到達屏障時,屏障才會開門,所有被屏障攔截的線程才會繼續運行。

3、Semaphore

場景

有時候并發太大的時候,我們需要人工的控制,譬如一些數據庫的連接數這樣子的,資源畢竟有限的,不可能無限去創建連接,此時我們就需要利用Semaphore去控制。

Semaphore(信號量)是用來控制同時訪問特定資源的線程數量,它通過協調各個線程,以保證合理的使用公共資源。可以控制系統的流量,拿到信號量的線程可以進入,否則就等待。通過acquire()和release()獲取和釋放訪問許可。

更多性能測試相關學習可以關注公眾號大話性能。

總結

以上是生活随笔為你收集整理的java模拟数据库压测_写并发压测 java 脚本你必须会的 3 个类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。