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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java并发策略_Java并发(六):并发策略

發布時間:2025/4/16 java 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java并发策略_Java并发(六):并发策略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過多次優化實例來了解選擇并發策略的正確姿勢

通過模擬瀏覽器程序的渲染頁面(Page-Rendering)功能,為了方便,假設HTML頁面只會包含標簽文本和圖片以及URL;

第一個版本:串行加載頁面元素

public classSingleThreadRenderer{voidrenderPage(CharSequence source){

renderText(Source);

List imageData = new ArrayList();for(ImageInfo imageInfo : scanForImageInfo(source))

imageData.add(imageInfo.downloadImage());for(ImageData data : ImageData)

renderImage(data);

}

}

存在的問題:瀏覽器加載圖片之前需要下載圖片,此時如果存在網絡擁塞,那么此時的CPU幾乎沒怎么用,大都在等待I/O操作執行完成,也會使用戶體驗降低:圖片沒下載完,文字就加載不出來;

改進版本1:使用Future實現頁面渲染

/***@authorYHW

* @ClassName: FutureRenderer

* @Description:

* @date 2019/3/28 16:21*/

public classFutureRenderer {privateExecutorService executor ;voidrenderPage(CharSequence source){final List imageInfos =scanForImageInfo(source);

Callable> task = new Callable>(){public Listcall(){

List result = new ArrayList();for(ImageInfo imageInfo : imageInfos)

result.add(imageInfo.downloadImage());returnresult;

}

};

Future> future =executor.submit(task);

renderText(source);try{

List imageData =future.get();for(ImageData data : imageData){

renderImage(data);

}

}catch(InterruptedException e){

Thread.currentThread().interrupt();

future.cancel(true);

}catch(ExecutionException e){throwlaunderThrowable(e.getCause());

}

}

}

該版本使得頁面文本和圖片實現異步加載,但還有可以優化的地方,假設渲染文本的速度遠大于圖片的下載速度(很有可能),那么該版本與串行程序最后的性能差別不大,所以此改進方法對于性能的提升非常有限,而代碼卻更加復雜,其實在大量相互獨立且同構的任務可以并發進行處理時,才能體現出將程序的負載分配帶來真正的性能提升;

改進版本2:使用完成服務(CompletionService),其基于Executor和BlockingQueue,可以將Callable任務交給它來執行,再使用類似隊列的出隊操作來獲取結果:

public classRenderer {private finalExecutorService executor;

Renderer(ExecutorService executor){this.executor =executor; }voidrevderPage(Charquence source){

List info =scanForImageInfo(source);

CompletionService completionService = new ExecutorComplementService(executor);for(finalImageInfo imageInfo : info)

completionService.submit(new Callable(){publicImageData call(){returnimageInfo.downloadImage();

}

});

renderText(source);try{for(int t = 0, n = info.size(); t < n; t++){

Future f =completionService.take():

ImageData imageData=f.get();

renderImage(imageData);

}

}catch(InterruptedException e){

Thread。currentThread().interrupt();

}catch(ExecutionException e){throwlaunderThrowbale(e.getCause());

}

}

}

經過第二次的改進,頁面更加“響應式”,每個圖片都會在下載完成后直接加載渲染至頁面,同時異步加載HTML中的文本和URL,使用戶獲得更加動態的界面;

總結

以上是生活随笔為你收集整理的java并发策略_Java并发(六):并发策略的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 丰满人妻一区二区 | 免费看欧美一级特黄a大片 国产免费的av | 亚洲美女性视频 | 国产精品美女www爽爽爽视频 | 麻豆免费网站 | 欧美日韩国产一区二区三区在线观看 | 涩涩视频免费在线观看 | 免费性网站| 四虎精品久久 | 五月av综合av国产av | 中国色老太hd | 亚洲精品在线观看av | 一区二区三区视频免费在线观看 | 性欧美lx╳lx╳ | 亚洲一区二区三区成人 | 国产天堂网 | 天天影视插插插 | 日韩国产传媒 | 亚洲国产成人va在线观看天堂 | 国产91精品久久久 | 办公室荡乳欲伦交换bd电影 | 91网站免费看 | 成年人在线观看视频网站 | 男女拍拍拍| 成 人片 黄 色 大 片 | 午夜伦理剧场 | 国产美女免费 | 久久婷香| 久久久久这里只有精品 | 欧美a在线视频 | 自拍露脸高潮 | 亚洲 欧美 日韩系列 | 天天操天天干天天舔 | 调教一区二区 | 亚洲色偷偷色噜噜狠狠99网 | 国产三级视频网站 | 午夜色大片 | 99精品福利 | 9久精品 | 久久精品免费在线观看 | 一区二区日韩视频 | 800av免费在线观看 | 日本黄a| 6680新视觉电影免费观看 | 欧美视频一区二区三区四区在线观看 | 久久亚洲少妇 | 亚洲av永久一区二区三区蜜桃 | a国产精品 | 亚洲美免无码中文字幕在线 | 免费看毛片网站 | 小视频在线免费观看 | 女儿的朋友5中汉字晋通话 欧美成人免费高清视频 | 亚洲精品国产视频 | a国产精品 | 我要看黄色大片 | 中文字幕乱码亚洲无线三区 | 99精品久久久 | 日本美女性生活视频 | 精品国模一区二区三区欧美 | 亚洲黄色成人 | 人人玩人人干 | 亚洲va欧美 | 爱看av | 久久久久久久久久一区二区三区 | 岛国午夜视频 | 国产精品熟女视频 | 国产精品亚洲一区二区三区在线观看 | 精人妻无码一区二区三区 | 91免费在线观看网站 | 日韩在线天堂 | 国产精彩视频 | 在线不欧美 | 果冻传媒18禁免费视频 | 国产欧美日韩精品区一区二污污污 | 日本乳汁视频 | 黄色av一区二区三区 | 国产91视频播放 | 国产高清一级 | 99精品免费在线观看 | 综合久久久久久久 | 小优视频污 | 日本成人高清 | 免费看成人| 一级黄色小视频 | a级一级黄色片 | 永久av| 99精品在线免费视频 | 91精彩视频在线观看 | 狠狠影视| 日本色中色 | 欧美精品久久 | 九九久久国产视频 | 久久国产主播 | 插插插av| 麻豆出品 | 男人日女人b视频 | 亚洲女人的天堂 | 国产精品熟妇一区二区三区四区 | 美女色网站 |