成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

并發編程領域的Thread-Per-Message設計模式到底是什么?

開發 后端
編程也是這樣,比如寫一個HTTP Server,很顯然只能在主線程中接收請求,而不能處理HTTP請求,因為若在主線程中處理HTTP請求,則同一時間只能處理一個請求,太慢了!這時就可以采取委托的思路,創建一個子線程,委托子線程去處理HTTP請求。

[[400312]]

并發編程的核心是什么?

  • 同步
  • 互斥
  • 分工

并發編程解決分工問題有哪些設計模式?

  • Thread-Per-Message模式
  • Worker Thread模式
  • 生產者-消費者模式

簡單說說Thread-Per-Message模式

將事情委托他人代辦,有個好處,就是可以專心做自己事了。

編程也是這樣,比如寫一個HTTP Server,很顯然只能在主線程中接收請求,而不能處理HTTP請求,因為若在主線程中處理HTTP請求,則同一時間只能處理一個請求,太慢了!這時就可以采取委托的思路,創建一個子線程,委托子線程去處理HTTP請求。

這種騷操作,在并發領域就是Thread-Per-Message模式(后文簡稱為 TPM):為每個任務分配一個獨立線程。這也是最簡單的一種分工方案。

Java 線程實現TPM

TPM最經典的應用場景就是網絡編程的服務端實現。

服務端為每個客戶端請求創建一個獨立線程,當線程處理完請求后,自動銷毀,這是最簡單的并發處理網絡請求的方法。

  • 比如echo程序的服務端

但該實現不可能在實際生產使用,因為Java線程實在是個重量級對象:

  • 創建線程比較耗時
  • 線程占用的內存也較大

所以,為每個請求創建一個新的線程并不適合互聯網的高并發場景。

難道TPM只是空想國?如果換一種實現,估計你會想到線程池。方向沒問題,但引入線程池也會增加復雜度。

換個角度看問題,語言、工具、框架應該是幫助我們更高性能實現方案的,而不是用來否定方案的,TPM作為一種最簡單的分工方案,Java語言支持不了,顯然是Java語言本身設計問題。

Java語言里,Java線程是和操作系統線程一一對應的,這種做法本質上是將Java線程的調度權完全委托給操作系統,而操作系統在這方面非常成熟,所以這種做法的好處是穩定、可靠,但是也繼承了操作系統線程的缺點:創建成本高。為了解決這個缺點,Java并發包里提供了線程池等工具類。這個思路在很長一段時間里都是很穩妥的方案,但是這個方案并不是唯一的方案。

業界還有另外一種方案:

輕量級線程

該方案在Java領域知名度不高,但和Go里的協程,本質都是一種輕量級線程。其創建成本很低,和創建一個普通對象類似;并且創建速度和內存占用相比os線程至少有一個數量級提升,所以基于輕量級線程實現TPM就完全沒有問題。

Java也意識到輕量級線程的意義,OpenJDK的Loom項目就是要解決Java語言的輕量級線程問題。Loom 中的輕量級線程稱為Fiber。

使用Fiber實現TPM。

Loom在設計輕量級線程時,也充分參考了當前Java線程的使用方式,所以學習成本還是很低的。只需將new Thread(()->{…}).start()換成 Fiber.schedule(()->{})。

在 Java 的高并發領域,雖然不具備可行性,不過對一些并發度沒那么高的異步場景,例如定時任務,采用 TPM完全沒問題。

本文轉載自微信公眾號「JavaEdge」,可以通過以下二維碼關注。轉載本文請聯系JavaEdge公眾號。

 

責任編輯:武曉燕 來源: JavaEdge
相關推薦

2017-09-07 14:44:10

程序員

2021-07-01 19:31:50

并發JavaCPU

2020-10-21 10:54:07

物聯網商業技術

2022-10-08 00:00:00

Spring數據庫項目

2020-03-05 10:28:19

MySQLMRR磁盤讀

2020-10-14 06:22:14

UWB技術感知

2020-09-27 06:53:57

MavenCDNwrapper

2020-09-22 08:22:28

快充

2010-11-01 01:25:36

Windows NT

2011-04-27 09:30:48

企業架構

2024-02-07 12:35:00

React并發模式concurrent

2023-10-11 08:29:54

volatileJava原子性

2024-06-07 10:05:31

2020-10-27 10:26:03

編程開發Java

2009-06-09 22:11:44

JavaScriptObject

2021-01-21 21:24:34

DevOps開發工具

2021-02-05 10:03:31

區塊鏈技術智能

2023-07-12 15:32:49

人工智能AI

2021-07-07 05:07:15

JDKIterator迭代器

2024-02-04 00:01:00

云原生技術容器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久黄视频 | 中文一区 | 亚洲视频一 | 亚洲精品一区二区三区蜜桃久 | 精品久久久久一区 | 亚洲精品久久久久avwww潮水 | 一级大片| 日韩电影在线 | 国产欧美一区二区三区久久人妖 | 天天天天操 | 亚洲精品一二区 | 久久伊人一区二区 | 精品亚洲一区二区三区四区五区 | 伊人久久精品一区二区三区 | 久久久成人精品 | 久久精片| 欧美激情亚洲 | 国产偷录叫床高潮录音 | 日本久久网 | 黄a网站| 黄色一级大片在线观看 | 狠狠操狠狠干 | 中文字幕亚洲精品 | 一区二区三区四区在线 | 日韩成人在线免费观看 | 欧美黄色小视频 | 久久99精品国产麻豆婷婷 | 国产一区二区三区精品久久久 | 午夜影院在线观看 | 可以免费看的毛片 | 色av一区| 久久国产精品一区二区三区 | 精品久久久久久亚洲精品 | 久热国产精品视频 | 欧美日韩专区 | 久久久国产一区二区三区 | 午夜成人在线视频 | 欧美一区二区在线观看 | 91高清视频在线观看 | 天天干天天色 | 欧美日韩国产精品一区 |