java隊列實現限流,java中應對高并發的兩種策略

目的:提高可用性

通過ExecutorService實現隊列泄洪

//含有20個線程的線程池

private ExecutorService executorService = Executors.newFixedThreadPool(20);

將有并發壓力的下游代碼放入到線程池的submit方法中,如下:

//同步調用線程池的submit方法 簡單實現 擁塞窗口為20的隊列泄洪(一個服務器同一時間只能處理20個請求,其他請求隊列等待)

Future future = executorService.submit(new Callable() {

//此處調用有并發壓力的下游接口

}

return null;

}

});

try {

//獲取任務的執行結果

future.get();

} catch (InterruptedException e) {

e.printStackTrace();

} catch (ExecutionException e) {

e.printStackTrace();

}

通過Guava RateLimit 負載均衡的情況下,在單機內部實現限流

private RateLimiter orderCreateRateLimiter = RateLimiter.create(300);//限制300tps

在方法入口內加上以下代碼:

//入口處限流

if(!orderCreateRateLimiter.tryAcquire()){

//拋出異常;

}

最后:

這里只簡單描述了如何最簡單的使用,降低高并發對系統的壓力,沒有剖析內部源碼實現,望諒解

標簽:20,應對,隊列,submit,并發,限流,線程,java

來源: https://www.cnblogs.com/wuba/p/11516985.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542551.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542551.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542551.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

crontab 日志_liunx 中定時清理過期日志文件

問題描述經常遇到日志文件過多,占用大量磁盤空間,需要定期刪除過期日志。問題涉及方面刪除過期日志的腳本。定時任務刪除任務腳本先查詢到過期的日志文件,然后刪除。語法find path -option [ -print ] [ -exec -ok command ] …

JavaScript | 數組的常用屬性和方法

JavaScript的通用屬性和數組方法 (Common properties and methods of array in JavaScript ) Properties/MethodsDescriptionsarray.lengthReturns the length of the array/total number of elements of the array array[index]Returns the item name stored at “index” pos…

php dbutils 使用,dbutilsapi

相對lisp?而?言,可以使?用.net的強?大api,實現各種酷炫功能。相對c#及arx?...文件utils.py的模塊名分別是mycompany.utils和 mycompany.web.utils。 mycompany......CouchDB -b 關閉后臺運行的 CouchDB : CouchDB -d web 訪問:http://127.0.0.1:5984/_utils/index.html E-…

html 導航欄

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>lvnian學習(http://lvnian.blog.51cto.com/)</title> <style> ul {list-style-type:none;margin:0;padding:0; }a:link,a:visited{display:block;font-weigh…

將搜索二叉樹轉換為鏈表_將給定的二叉樹轉換為雙鏈表(DLL)

將搜索二叉樹轉換為鏈表Given a Binary tree and we have to convert it to a Doubly Linked List (DLL). 給定二叉樹&#xff0c;我們必須將其轉換為雙鏈表(DLL)。 Algorithm: 算法&#xff1a; To solve the problem we can follow this algorithm: 為了解決這個問題&#…

cuda編程_CUDA刷新器:CUDA編程模型

CUDA刷新器&#xff1a;CUDA編程模型 CUDA Refresher: The CUDA Programming Model CUDA&#xff0c;CUDA刷新器&#xff0c;并行編程 這是CUDA更新系列的第四篇文章&#xff0c;它的目標是刷新CUDA中的關鍵概念、工具和初級或中級開發人員的優化。 CUDA編程模型提供了GPU體系結…

php curl_error源碼,PHP curl_error函數

PHP curl_error函數(PHP 4 > 4.0.3, PHP 5)curl_error — 返回一個保護當前會話最近一次錯誤的字符串說明string curl_error ( resource $ch )返回一條最近一次cURL操作明確的文本的錯誤信息。參數ch由 curl_init() 返回的 cURL 句柄。返回值返回錯誤信息或 (空字符串) 如果…

SQL中Where與Having的區別

“Where” 是一個約束聲明&#xff0c;使用Where來約束來之數據庫的數據&#xff0c;Where是在結果返回之前起作用的&#xff0c;且Where中不能使用聚合函數。“Having”是一個過濾聲明&#xff0c;是在查詢返回結果集以后對查詢結果進行的過濾操作&#xff0c;在Having中可以使…

java 邏輯表達式 布爾_使用基本邏輯門實現布爾表達式

java 邏輯表達式 布爾將布爾表達式轉換為邏輯電路 (Converting Boolean Expression to Logic Circuit) The simplest way to convert a Boolean expression into a logical circuit is to follow the reverse approach in which we start from the output of the Boolean expre…

python自然語言處理書籍_精通Python自然語言處理pdf

自然語言處理&#xff08;NLP&#xff09;是有關計算語言學與人工智能的研究領域之一。NLP主要關注人機交互&#xff0c;它提供了計算機和人類之間的無縫交互&#xff0c;使得計算機在機器學習的幫助下理解人類語言。 本書詳細介紹如何使用Python執行各種自然語言處理&#xff…

通達oa 2013 php解密,通達OA漏洞學習 - 安全先師的個人空間 - OSCHINA - 中文開源技術交流社區...

說明通達OA漏洞在去年上半年已爆出&#xff0c;這不趁著周末沒事做&#xff0c;將源碼下載下來進行復現學習。文件包含測試文件包含檢測&#xff0c;payload1:ip/ispirit/interface/gateway.php?json{"url":"/general/../../mysql5/my.ini"}利用文件包含訪…

溫趙輪 訪談

“溫趙輪”三大軟狗&#xff0c;你聽說過嗎&#xff1f;今天的1024訪談錄給大家介紹的就是程序員中當之無愧的偶像組合——溫趙輪。 Winter寒冬。阿里P8&#xff0c;正在向P9的道路上奔跑。傳說中的他有錢、出身好&#xff0c;可不是搞互聯網的屌絲程序員。 老趙&#xff0c;…

linux開源文檔管理系統_Linux中的系統管理員問題 免費和開源軟件

linux開源文檔管理系統根帳號 (Root Account) The "root" account is the most unrestrictive account on a Linux Operating system. This account enables you to complete all features of System admin, including accounts, changing client passwords, looking…

matlab上機實驗1,上機實驗1:熟悉matlab基本操作

其中 x 在 [-2, 2] 間共等切分為 21 點&#xff0c;y 在 [-1, 1] 間共等切分為 21 點&#xff0c;所以此曲面共有 21*21441 個點。a. 請用預設的顏色對應表(Colormap)來畫出此曲面。 b. 請以曲面的斜率來設定曲面的顏色。 c. 請以曲面的曲率來設定曲面的顏色。2. 請用 meshc 指…

公眾號 -「前端攻略 開光篇」

作為一枚程序員&#xff0c;每件重要項目的開始都忍不住使用"Hello World"。 這個公眾號是不是來晚了&#xff1f;如果你有這個疑問&#xff0c;那么我想說&#xff1a;對于寫作和思考&#xff0c;任何時候都不晚。我用四個簡單的自問自答&#xff0c;來講講這個前端…

python 桌面應用 啟動緩慢_如何加快Python 應用的啟動時間

我聽說pipenv9.0.2已經發布&#xff0c;啟動時間有了很大的改進。 我很快就試了一下&#xff0c;但我覺得并不快。所以我用Python3.7的新特性來研究它。 在本文中&#xff0c;我將介紹該特性以及如何使用它。 啟動時間≒導入時間 例如&#xff0c;pipenv -h 的執行時間比顯示幫…

python單詞首字母大寫_在Python中將每個單詞的首字母大寫

python單詞首字母大寫Here, we are implementing a python program to capitalizes the first letter of each word in a string. 在這里&#xff0c;我們正在實現一個python程序來大寫字符串中每個單詞的首字母。 Example: 例&#xff1a; Input: "HELLO WORLD!"O…

matlab中求模最大,matlab求取模極大值時出錯

本帖最后由 Nate_ 于 2016-4-17 15:57 編輯points1024 時&#xff0c;有波形輸出&#xff0c;但信號有5438個點。改為5438就不行。主程序&#xff1a;%小波模極大值重構是采用的交替投影法close all;points5438; level4; sr360; num_inter6; wfdb4;%所處理數據的…

stl向量_如何檢查C ++ STL中向量中是否存在元素?

stl向量Given a vector and an element to be searched in the vector. 給定一個向量和要在向量中搜索的元素。 To check whether an elements exists in a vector or not – we use find() function. find() function takes 3 arguments. 要檢查向量中是否存在元素 –我們使用…

java socket如何請求485協議_javaSE第十五部分 網絡編程(1)Socket和ServerSocket

網絡編程基礎知識C/S結構&#xff1a;全稱為Client/Server結構&#xff0c;是指客戶端和服務器結構。常見程序有&#xff31;&#xff31;、迅雷等軟件。B/S結構&#xff1a;全稱為Browser/Server結構&#xff0c;是指瀏覽器和服務器結構。常見瀏覽器有谷歌、火狐等。兩種架構各…