中国工业网_网络工业品牌 资讯创造价值

java bus Java并發——阿里架構師

一、創建線程

1.創建普通對象,只是在JVM的堆里分配一塊內存而已

2.創建線程,需要調用操作系統內核的API,然后操作系統需要為線程分配一系列資源,成本很高

線程是一個重量級對象,應該避免頻繁創建和銷毀,采用線程池方案

二、一般的池化資源

// 假設Java線程池采用一般意義上池化資源的設計方法

class ThreadPool {

// 獲取空閑線程

Thread acquire() {

}

// 釋放線程

void release(Thread t) {

}

}

// 期望的使用

ThreadPool pool;

Thread T1 = pool.acquire();

// 傳入Runnable對象

T1.execute(() -> {

// 具體業務邏輯

});

三、生產者-消費者模式

業界線程池的設計,普遍采用生產者-消費者模式,線程池的使用方是生產者,線程池本身是消費者

public class MyThreadPool {

// 工作線程負責消費任務并執行任務

class WorkerThread extends Thread {

@Override

public void run() {

// 循環取任務并執行

while (true) {

Runnable task = null;

try {

task = workQueue.take();

} catch (InterruptedException e) {

}

task.run();

}

}

}

// 利用阻塞隊列實現生產者-消費者模式

private BlockingQueue workQueue;

// 內部保存工作線程

List threads = new ArrayList<>();

public MyThreadPool(int poolSize, BlockingQueue workQueue) {

this.workQueue = workQueue;

for (int i = 0; i < poolSize; i++) {

WorkerThread work = new WorkerThread();

work.start();

threads.add(work);

}

}

// 提交任務

public void execute(Runnable command) throws InterruptedException {

workQueue.put(command);

}

public static void main(String[] args) throws InterruptedException {

// 創建有界阻塞隊列

BlockingQueue workQueue = new LinkedBlockingQueue<>(2);

// 創建線程池

MyThreadPool pool = new MyThreadPool(10, workQueue);

// 提交任務

pool.execute(() -> {

System.out.println("hello");

});

}

}

四、Java線程池

Ⅰ. ThreadPoolExecutor

int maximumPoolSize,

long keepAliveTime,

TimeUnit unit,

BlockingQueue workQueue,

ThreadFactory threadFactory,

RejectedExecutionHandler handler)

// 讓所有線程都支持超時,如果線程池很閑,那么將撤銷所有線程

public void allowCoreThreadTimeOut(boolean value)

復制代碼

1.corePoolSize:線程池保有的最小線程數

2.maximumPoolSize:線程池創建的最大線程數

3.keepAliveTime & unit

如果一個線程空閑了keepAliveTime & unit,并且線程池的線程數大于corePoolSize,那么這個空閑的線程就要被回收

4.workQueue:工作隊列

5.threadFactory:自定義如何創建線程

6.handler

線程池中的所有線程都很忙碌,并且工作隊列也滿了(工作隊列是有界隊列),此時提交任務,線程池會拒絕接收

CallerRunsPolicy:提交任務的線程自己去執行該任務

AbortPolicy:默認的拒絕策略,拋出RejectedExecutionException

DiscardPolicy:直接丟棄任務,不會拋出任何異常

DiscardOldestPolicy:丟棄最老的任務,然后把新任務加入到工作隊列中

Ⅱ. Executors

1.不建議使用Executors,因為Executors提供的很多默認方法使用的是無界隊列LinkedBlockingQueue

2.在高負載的情況下,無界隊列容易導致OOM,而OOM會導致所有請求都無法處理

3.因此強烈建議使用有界隊列

Ⅲ. 拒絕策略

1.使用有界隊列,當任務過多時,線程池會觸發拒絕策略

2.線程池默認的拒絕策略會拋出RejectedExecutionException,這是一個運行時異常,開發時很容易忽略

3.如果線程池處理的任務非常重要,可以自定義拒絕策略

Ⅳ. 異常處理

1.使用ThreadPoolExecutor.execute()方法提交任務時,如果任務在執行過程中出現運行時異常

會導致執行任務的線程終止,并且無法獲得任何通知

2.因此最穩妥的方法還是捕獲所有異常并處理

try {

// 業務邏輯

} catch (RuntimeException x) {

// 按需處理

} catch (Throwable x) {

// 按需處理

}

標簽: java   阿里架構師   開發  
來源:星島中文網
編輯:GY653

免責聲明:本網站內容主要來自原創、合作媒體供稿和第三方自媒體作者投稿,凡在本網站出現的信息,均僅供參考。本網站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網站中的網頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網站在收到上述法律文件后,將會依法盡快聯系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。

  • 相關推薦
主站蜘蛛池模板: 塔罗牌占卜在线预测 - 塔罗牌爱好者| 耀美软瓷施工队-13638350103-专注于软瓷施工勾缝的贴软瓷施工队 - 软瓷,软瓷施工,软瓷勾缝,软瓷怎么施工,软瓷怎么勾缝,贴软瓷,软瓷施工队 | 全自动|电加热配液罐,浓缩器厂家-森博百科 | 真空干燥箱厂家-热风循环烘箱生产厂家-鼓风烘干箱价格-南京火燥机械科技有限公司 | 山东德曼医疗设备集团有限公司 | 皮革耐折试验机-消字率测试仪-面具全视野测试仪-东莞市誉扬检测仪器有限公司 | 郑州同林-金属切削液,全合成,半合成,防锈水溶性,微乳,油基长寿乳化切削液生产厂家 | 通道闸-人行通道闸|通道闸机系统厂家-深圳伊帕克智能科技有限公司 | 沈阳机电一体化电热锅炉_沈阳蓄热式电锅炉_沈阳壁挂式电锅炉【沈阳远鹏电热供水设备工程安装有限公司】 | 硫酸、硫酸铵、氯磺酸、氯化亚砜、硫酸钾、对位酯生产销售 - 河北和合化工有限公司 | 树脂井盖,复合井盖,井盖厂家-山东宝盖新材料| 卷帘门,防火卷帘,快速门,硬质快速门,提升门,伸缩门,堆积门,车库门维修-烟台捷曼门业有限公司 | 轻质隔墙板厂家-加气隔墙板_grc轻质隔墙板_空心实心复合隔墙板_水泥混凝土轻质隔墙板批发价格 | 企业网站模板_公司模板网站_网站整站源码 - 亿搜云全网营销平台 企业头条—优府网企业自媒体 | 山东德曼医疗设备集团有限公司| 宁波公司注册_宁波注册公司_宁波代理记账_宁波做内账|安隆会计专业服务机构 | 领先的木工机械生产厂家,原木加工流水线,立式带锯机,数控木工跑车-邢台亚士达机械制造有限公司 | 社会百态,七仙女思春完整版免费高清电影引发的思考 | 西安生殖医学医院_陕西省老医协生殖医学医院【官方网站】 | 新闻营销媒体发稿-新闻发布-文芳阁网络媒体发稿公司 | 徐州恒铭机械设备有限公司_装载机配件_压路机配件_起重机配件_挖掘机配件_配件_徐州恒铭机械设备有限公司 | 浩通集团 国际货运 物贸一体化 中非经贸| 液体灌装机_全自动灌装机_大桶灌装机_200L灌装机_涂料油漆灌装机-昆山灌装自动化设备有限公司 | 围挡厂家_施工围挡_PVC围挡_建筑工程围挡_深圳市旭东钢构技术开发有限公司【官网】 | 网站客服系统_在线客服系统【莺语客服】 | 机械设备回收_二手机器回收_设备拆除回收_广州益美机械设备回收公司 | 履带底盘-橡胶履带底盘-无线遥控底盘-德州力维智能装备有限公司 铝压铸件_铝合金压铸件_铝合金压铸件厂家-安平县长虹压铸厂 | 企多网-B2B网站,B2B商务平台免费b2b,推荐注册送积分,免费注册企业商铺, | 耐火砖厂家价格-郑州荣盛窑炉耐火材料有限公司 | 家用座椅电梯 斜挂升降平台 无障碍升降机 残疾人升降机的生产厂家超易达机械 | 树脂井盖,复合井盖,井盖厂家-山东宝盖新材料 | 营口新北方制糖有限公司| 直流电机维修_杭州高压电机修理-杭州先恒机电有限公司 | 威学一百-专注国际学校择校备考-DSE-A-level-雅思-托福-OSSD-港澳台联考-AP-IGCSE-IB-AMC-多邻国-PTE-SAT-SSAT-小语种(如日语,韩语,德语,法语,西班牙语,意大利语,俄语,泰语)等考试培训,为出国留学学生提供个性化定制性学习方案,线下实体面授+线上网络课程, 提供一对一,小班课等多种班型 | 亿企商贸-亿万企业的商务贸易平台-B2B企业产品发布供求信息平台,一带一路中国企业及产品展示平台,免费企业智能自助建站网络营销推广平台,打造B2B企业黄页产品信息发布推广专业综合电子商务平台! | 现代卓越官网-专注于pmp培训证书-pmp考试报名时间-pmp认证-项目管理pmp-ACP敏捷管理-NPDP认证 | 陶瓷复合钢管-专业提供江苏陶瓷钢管和陶瓷内衬复合钢管的生产厂家 | 深圳心理咨询-专业心理咨询服务平台「专家免费在线」-深圳从心开始心理O2O | 上海视研装饰工程有限公司-上海标识公司,上海标识设计 | 无锡防火门-防火窗-防火卷帘门-福臣门业科技有限公司 | 无轴螺旋输送机_双无轴螺旋输送机_垃圾,污泥无轴螺旋输送机-新乡市大汉振动机械有限公司 |