国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

初識多線程

2019-11-06 06:16:06
字體:
來源:轉載
供稿:網友

0. 資源限制有哪些?

硬件限制:帶寬、硬盤讀寫速度、CPU的處理速度。 軟件限制數據庫的連接數、socket的連接數等等。 應對策略:對于硬件限制,考慮集群并行執行程序,如Hadoop、服務器集群,不同機器處理不同數據??梢酝ㄟ^“數據ID%機器數”,計算得到一個機器的編號,然后由對應編號的機器處理這筆數據。對于軟件限制,可以使用連接池和socket復用等管理連接數

1. 為啥要用多線程?

多線程是為了利用現有資源讓程序運行得更快

2. 線程越多越快嗎?

不是,因為多線程創建、上下文切換會影響執行速度。每個線程都有自己的Stack,java在64位系統默認Stack大小是1024KB

3.如何減少線程的創建?

利用線程池

4.如何減少上下文切換?

A、多線程競爭鎖時,會引起上下文切換,可以采用三種方式避免鎖的使用: ThreadLocal:單個線程獨享數據 無鎖并發編程:如將數據的ID按照Hash算法取模分段,不同線程處理不同段的數據 CAS算法:Java的Atomic包使用CAS算法來更新數據,而不需要加鎖 B、根據硬件配置和任務量創建適量線程 C、協程(coroutine):在單線程里實現多個任務的調度,并在單線程里維持多個任務間的切換

5.觀察線程狀態命令

jstack pid > /home/dump20170307 grep /home/dump20170307 | awk ‘{PRint 2345}’ | sort | uniq -c

6.線程的幾種狀態

注意Runnable被包含到Running中

線程狀態

7.死鎖

線程間互相等待彼此持有的鎖會產生死鎖,通過jstack可以方便排查 避免一個線程中同時獲取多個鎖 避免一個線程的鎖內同時占有多個資源 嘗試使用定時鎖tryLock(timeout)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平湖市| 磐安县| 社旗县| 泸溪县| 丰都县| 松潘县| 和平区| 清水河县| 柘城县| 诏安县| 报价| 钟山县| 突泉县| 宕昌县| 新乡市| 佛山市| 马公市| 松江区| 天门市| 会东县| 南康市| 福州市| 新民市| 五台县| 邻水| 沅陵县| 邢台县| 社旗县| 庆城县| 湖口县| 乃东县| 区。| 城市| 刚察县| 会东县| 桐乡市| 宜宾市| 成武县| 曲阳县| 夹江县| 从化市|