Java初學有必要深入多執行緒程式設計嗎,如何學習?笑含2109939022018-04-14 15:29:07

有必要啊!非同步同步,synchonized, voltile,lock,wait,notify, 執行緒池,分分鐘把你搞暈!

Java初學有必要深入多執行緒程式設計嗎,如何學習?海鈴蘭故事2018-05-29 21:48:55

多執行緒作為JAVA學習的主要難點之一,有開發複雜,出現問題難以復現等特性,但卻是不得不掌握的知識點,因為JAVA中使用多執行緒的場景實在是太多了。

先看下多執行緒(所有語言)的發展背景:早期的計算器都是單核CPU,想要獲得更高的效能只能是擴充套件硬體(摩爾定律),但是很快硬體的發展達到了瓶頸,要提高計算能力只能是橫向擴充套件(增加計算機CPU核心,現在也沒有單核心的計算機了吧),因為一個CPU在同一個時間點上只能處理一個執行緒,現在的伺服器少則16核,如果使用單執行緒程式設計,相當於你只用了1/16的CPU資源,暴殄天物!所以多執行緒是很有必要學習的。

Java初學有必要深入多執行緒程式設計嗎,如何學習?

多執行緒可以用來在什麼場景使用呢?

1,密集型計算:將一個大任務進行拆分,使用多執行緒進行執行,假設從1加到100萬,你單執行緒需要8分鐘,然後你分為16個執行緒做計算(半分鐘),加上彙總的時間和建立銷燬執行緒的時間,不會超過一分鐘,7分鐘喝咖啡足夠了吧。

下載大檔案的時候拆分成幾個小檔案,充分利用頻寬!

2,非同步呼叫:多執行緒和非同步不是一個概念,但是非同步一定是多執行緒的,如果是同步呼叫發生阻塞的時候,CPU資源就浪費了,但如果是非同步,可以執行別的執行緒,提高CPU使用率!

3,web容器技術:一個請求使用一個執行緒去處理(多數容器已棄用,改用netty架構,一個執行緒遍歷連線,分發給執行緒池進行任務處理)

4,執行緒池:例如資料庫連線池,JAVA中的執行緒池等,執行緒池建立多個執行緒來處理資料,避免頻繁建立執行緒的開銷!

5,批處理:用於多個batch任務可並行處理,batch任務中的job可並行處理的情況!

可以說多執行緒代表著高效率的執行程式,所以有很大的理由學習好多執行緒!

Java初學有必要深入多執行緒程式設計嗎,如何學習?

怎麼學好多執行緒呢?

①,明白計算機原理:多核CPU的執行方式,執行緒執行,什麼時候容易阻塞,暫存器,記憶體(可對照理解JAVA記憶體模型)等!

②,執行緒基本操作:執行緒的建立,實現,開始執行緒,掌握執行緒狀態,執行緒中斷,執行緒休眠與喚醒等!

③,掌握多執行緒常用技術:執行緒池的幾種建立方式,使用synchonize,讀寫鎖等加鎖操作,使用阻塞佇列實現順序執行,使用threadlocal實現執行緒本地變數,使用future實現非同步回撥,使用fork-join框架並行處理任務,JAVA8的並行流式處理也是不錯的選擇!

④,學會拋棄多執行緒:netty使用網路IO多路複用避免多執行緒開銷,redis使用單執行緒才能被作為分散式鎖,全域性唯一id生成的執行緒安全策略!

Java初學有必要深入多執行緒程式設計嗎,如何學習?

不是說多執行緒複雜就不用,也不是說多執行緒高效就一定用,一切根據場景來定,多執行緒開發中的實際案例,可隨時交流,更多的技術分享,敬請關注。。。

Java初學有必要深入多執行緒程式設計嗎,如何學習?會點程式碼的大叔2019-01-07 11:35:03

謝邀~

Java的多執行緒確實是Java程式設計的難點之一,是否要學習以及如何學習,提一些建議,希望對大家有幫助。

Java初學有必要深入多執行緒程式設計嗎,如何學習?

是否要學習Java多執行緒

其實這是一道送分題,建議Java程式設計師都要深入學習;

在Java開發過程中,有些技術可能很長時間都不會用到,但如果瞭解的話,在學習其他知識的時候會理解的更加深刻,比如JVM,比如多執行緒。

另外一方面,面試經常會被問到多執行緒方面的問題,特別是面試高階程式設計師,以及面試大廠的時候,多執行緒的問題出現率很高。

作為初學者來說,可以先了解,在沒有熟練掌握之前,要謹慎使用。

Java初學有必要深入多執行緒程式設計嗎,如何學習?

如何學習Java多執行緒

Java多執行緒確實難,很多工作多年的程式設計師,也不敢說自己熟練掌握Java多執行緒。簡單說一下Java多執行緒需要學習的內容:

主要的知識點:如何建立執行緒;執行緒的狀態和生命週期;Java多執行緒程式設計的關鍵字,比如Volatile、synchronized等;執行緒狀態轉換;執行緒排程等等;

要了解執行緒池,做到熟練使用(自己寫不出來多執行緒,就用執行緒池);

瞭解什麼是執行緒安全,為什麼要保證執行緒安全;Java很多其他的類,都是區分執行緒安全和執行緒不安全的,比如Vector和ArrayList(並可以瞭解Concurrent併發包);

書籍的話推薦《Java併發程式設計實踐》,不過對於初學者來說,這本書比較晦澀;

推薦一個網站,大家可以跟著教程學習,免費的,還可以線上做練習:

http://how2j。cn/k/thread/thread-start/353。html

Java初學有必要深入多執行緒程式設計嗎,如何學習?

我將持續分享Java開發、架構設計、程式設計師職業發展等方面的見解,希望能得到你的關注;關注後可私信【資料】兩字,獲取更多學習資料。

Java初學有必要深入多執行緒程式設計嗎,如何學習?

Java初學有必要深入多執行緒程式設計嗎,如何學習?H哥聊Java2018-04-14 16:13:27

謝謝悟空小秘書的邀請。

Java初學有必要深入多執行緒程式設計嗎,如何學習?

對於初學者而言,沒必要深入去學習多執行緒,而且對於Java開發而言,真正用到多執行緒程式設計的地方並不是太多,當然這也和你所做的東西有關,比如遊戲程式設計,網路通訊,這個多執行緒是少不了的,但對於MIS系統而言,多執行緒用途並不多,所以除非你工作必需剛開始沒必要深入學習多執行緒。

對於初學者,重點放在學習好基礎語法,掌握Web開發或者安卓開發的流程,學習開發過程中常用的工具和框架,說白了就是先學會怎麼用,後續在工作中不斷的豐富自己的經驗。

本人從事Java開發有很多年了,也許是從事Web開發的緣故,剛開始幾乎就接觸不到多執行緒,也只要在後來的業務中才用到多執行緒的東西。

Java初學有必要深入多執行緒程式設計嗎,如何學習?

總之具體問題具體分析,技術是用來開發軟體的,軟體是為業務需要服務的,如果因為工作需要可以深入去研究,如果工作暫時不需要,可以把重心放在基礎上吧。

Java初學有必要深入多執行緒程式設計嗎,如何學習?中公優就業2018-05-10 17:14:59

初學者,建議還是先學好基礎知識(計算機體系結構和原理、作業系統),多執行緒也是基礎知識,屬於稍高階部分,可自行安排學習計劃。

至於如何入手,建議透過一個簡單的socket客戶端和服務端開始(可以擴充套件到自定義應用層協議),然後實現一個單執行緒的網路伺服器、然後多執行緒、然後NIO。期間,對相關知識體系進行整理,這樣下來,基本對多執行緒就有一個整體的認知了。

多執行緒和程式語言其實是沒有關係的。程式是告訴計算機幹什麼和怎麼幹活的,程式的改進都是基於計算機的體系結構和原理,更合理的利用計算機。多執行緒(多程序)和其他所有計算機技術一樣,都是為了在滿足人們實際需要的基礎上,最大限度的利用計算機資源。

Java初學有必要深入多執行緒程式設計嗎,如何學習?Java網際網路架構2018-11-30 18:49:28

非常有必要。

首先了解多執行緒才能瞭解編譯器或直譯器的執行機制,能夠對程式進行效能最佳化。

其次專案都是依賴某些框架和中介軟體來執行的,如果不瞭解多執行緒很容易陷入併發的坑裡。

最後現實的一點,不瞭解多執行緒是不可能拿到大廠offer的。

Java初學有必要深入多執行緒程式設計嗎,如何學習?JavaException2019-01-31 10:50:27

Java初學有必要深入多執行緒程式設計嗎,如何學習?

Java初學有必要深入多執行緒程式設計嗎,如何學習?

學習路線,先把基礎打牢。

Java初學有必要深入多執行緒程式設計嗎,如何學習?光聊科技2019-04-27 11:16:18

要知道,多執行緒本身其實是

與程式語言無關

的概念,所以其實不管你學習什麼語言,它都是一個很重要的知識點。但如果以

初學

為前提條件,我個人認為要看你學Java的

主要用途

,一般來說,學Java主要做兩個方面,一方面是後端、Web方向,一方面就是做安卓。以我的經驗來出發,針對這兩種學Java的用途大概說一下,如有偏差,歡迎大家在評論區交流討論,共同學習:

01 後端、Web

如果你學Java最終目的是想做後端、做Web的話,那鄙人認為暫時不用深入學習。畢竟要系統地學習Java還是要理解不少概念的,且得下翻不少功夫。但也還是要大概實踐一下多執行緒的一些基本的用法,面試時也很喜歡問多執行緒方面的知識 ,同時它也是作業系統的知識。程式語言是告訴計算機幹什麼和怎麼幹活的,多執行緒是為了在滿足人們實際需要的基礎上,最大限度地壓榨計算機的“剩餘價值”。

但如果你要做框架、做底層的話,那僅僅是上面說的實踐一下還是不夠的,需要用一些實際的例子練習一下。比如說做一個簡單的執行緒池、編寫一個網路程式設計的全雙工等等。

Java初學有必要深入多執行緒程式設計嗎,如何學習?

02 Android

如果你學Java是為了做Android,那還是有必須稍微深入一些的。畢竟當你每啟動一個APP裡,Android系統就啟動一個UI Thread或Main Thread。Android還提供了四種操作多執行緒的方式,Handler+Thread、 AsyncTask、 ThreadPoolExecutor、IntentService。總之,在安卓裡面,你可以有很多種開啟多執行緒的姿勢。

Java初學有必要深入多執行緒程式設計嗎,如何學習?

但不管你用來做什麼,當你學買習完基本之後,都一定要

再深入學習

一下多執行緒,這不僅是對程式設計能力有好處,在找工作時也將受益無窮。

以上就是我的拙見,歡迎在評論區討論。

Java初學有必要深入多執行緒程式設計嗎,如何學習?