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

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

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

  • 相關推薦
主站蜘蛛池模板: 乌兰察布市集宁牧田饲料科技有限公司-乌兰察布奶牛饲料|饲料原料加工|精品羊料 | 洒水车|冷藏车|LED广告车|油罐车|道路救援车|垃圾车|程力专用汽车股份有限公司销售九分公司 | 消防排烟风机|防火阀|斜流风机|江苏恒恒暖通设备有限公司 | 景德镇市华信物业管理有限公司| 植绒布工厂,植绒布现货批发-深圳市金峰盛植绒制品有限公司 | 西安西雷脉冲功率技术有限公司-高压调制器/加速器与脉冲功率系统的研发/生产/应用推广/高压脉冲电源的应用研究/设计/生产和销售/高功率脉冲器件/材料与仪器设备的研发/生产和销售/高电压/大电流/强磁场环境的模拟及测试服务/会议会展服务/货物及进出口的业务/脉冲功率技术领域类的技术转让 | 十堰急开锁0719-8888139|十堰开锁公司|十堰开锁电话|十堰换锁价格-同福锁城-十堰同福锁城 | 猴脑立体定位仪-无菌动物隔离器-格罗贝尔百科| 西克制冷官网│制冷机组冷风机冷库设备厂家-西克制冷(无锡)有限公司_西克制冷(无锡)有限公司 | 麦秸映像网络技术有限公司,河南省政府采网入驻对接,新乡网站维护建设,小程序开发,APP定制开发,钉钉开发,新乡软件开发等相关网络业务 | 耐力板厂家_pc耐力板价格_透明耐力板批发-佛山市麦粒建材有限公司 | 捷胜通运|超大件双清专线|欧美专线|订舱|订柜|订船|双清包税|纯电池运输|液体粉末专线| | 线束加工_线束加工厂_线束厂-苏州缆仕特电子有限公司 | 深山工作室提供网络投票系统|微信公众号投票|微信公众号小程序|抖音小程序|百度小程序|微信公众号开发|企业网站建设 | 中深世纪广告公司 深圳标志设计,深圳logo设计公司,包装设计公司,深圳商标设计,深圳画册设计公司 中商信息网-商务数据网-中文商务数据网 | 智能访客系统 - 来访登记系统_微信预约系统_人员出入管理系统_访客机_人脸识别系统门禁闸机 | 辽宁鑫宇实验室系统工程有限公司| 活性氧化铝球-活性氧化铝干燥剂厂家价格-3A-5A分子筛-巩义市亿洋水处理材料有限公司 | 合肥食品检测-安徽卫生检测-水质检测机构-安徽金标准检测研究院有限公司 | 压滤机入料泵_渣浆泵_耐磨污水泵_保定森力克水泵制造有限公司 | 硬度计,里氏硬度计,布氏硬度计,高强螺栓检测仪,平板导热仪,专业无损检测仪器商-北京时代新天测控技术有限公司-北京时代新天测控技术有限公司 | 切割片-砂轮片-抛光片-磨片-方格片-百叶片生产厂家定制加工-达蒙砂轮价格优惠 | 减速电机-调速电机-四大系列减速机-减速电机厂家-深圳市鑫希田机电有限公司官网 | 升降炉|推板炉|创卓炉业 | 萘系减水剂|缓凝|早强|聚羧酸|混凝土|石膏板|管桩减水剂厂家-潍坊英宏建材有限公司 | 中婴网,推动母婴产业健康·可持续发展,婴童网络专业传媒,母婴网,360孕婴童网,婴童品牌,婴儿用品品牌,婴儿用品加盟店,母婴用品加盟店 | 荆门市彩富机械有限责任公司|精铸件|五金|机械配件 | 微型压力传感器-工业压力放大器-压力传感器厂家-力准传感 | 智能一体化蒸馏仪_氨氮蒸馏仪_全自动智能蒸馏仪器厂家-那艾 | 免费建站_自助建站_网站建设_企业建站_中小企业建网站_免费网站模板-牵牛建站 | 美国Riverhawk轴承,Riverhawk十字弹簧轴承,Riverhawk联轴器,Riverhawk液压工具 | 太阳能路灯-庭院灯-太阳能灯生产厂家-北京日月升太阳能科技公司 太阳能路灯生产厂家-郑州太阳能高杆灯价格-道路照明智能路灯-河南坤德照明 | 人工草坪_施工围挡_体育场围网-人工草坪厂家菲斯福 | 首页-南德电气集团-电能质量产品解决方案|能源数字化系统解决方案|新能源检测评估服务|电力/光伏/储能EPC工程总承包 | 智能门锁管理-公寓管理软件-智能水电表管理系统-深圳安安智能 | 扫路车_洗扫车_清扫车_道路清扫车_天锦洗扫车-程力专用汽车股份有限公司 | 铜排,异型紫棒,紫铜棒,紫铜微孔管,异型黄管,黄铜管,异形紫管,紫铜管,焊接铜管,散热器铜管,电力铜管_河间市通海铜业有限公司 | 液位变送器_智能压力变送器_3051差压变送器_单双法兰,投入式,电容式,温度变送器-淮安润中仪表科技有限公司 | 爬架网@建筑爬架网@冲孔建筑爬架网片@工地冲孔建筑爬架网片@工地冲孔建筑爬架网片厂家@工地冲孔建筑爬架网片生产厂家-安平县诺德金属制品有限公司 | 原子灰厂家—长兴宝迪环保科技有限公司【官网】| 中商信息网-商务数据网-中文商务数据网 |