-
1 # 李老師tome
-
2 # java你我他
多執行緒在java中算是比較難的一塊,因此對於剛開始學習的話確實比較難理解,涉及到執行緒安全的問題。在你學習的過程中可以繼續往後學,不影響你學其他模組,最後學完之後可以單獨對多執行緒模組進行強化學習,程式碼實踐,之前我看過一本多執行緒的書,可以推薦給你。
-
3 # 程式碼接盤俠
多執行緒在java中比較普遍的問題,也是較難理解的部分。
現在可以學習多執行緒,多執行緒的內容比較多,有的也涉及到底層。現在可以學學試著理解,有一知半解的時候可以試試找找資料,也可以先記錄下來,後面慢慢理解。內容較多,等專案運用到的時候,再學習,可能不知從哪裡做起,到時候又花費較多的時間。
總之,學習還是循序漸進,一步步的理解。
-
4 # 王小碼
我也是半路出家的java程式設計師,而且主要靠自學起家的。
作為新手,如果你需要找工作,建議你把面試常問的問題搞清楚,就可以了。如果你已經上班了,建議你有一兩年實際開發經驗以後,再去徹底搞清楚這些問題。
-
5 # 一個小碼農的修煉
一個人的見識和年紀沒有關心。同樣的,不會隨著時間你就懂了。既然遇到了,就花時間解決。還有就是不同的知識深度理解的層次不同。自己努力能理解到什麼層次就是什麼層次。以後隨著知識沉澱有會有新的理解
-
6 # 自成宇宙
Java這一行目前以框架為主,都是封裝好的你。你暫時可以不必糾結,應該對工作影響不大。但是從長遠考慮必須要學好。io這塊Apache有幾個工具包,可以多讀讀相關程式碼。還有個hutool的工具包對常用操作有封裝可以從這方面入手。
-
7 # J小勁
先往後邊學,學習框架知識,許多框架中運用到了java基礎比如說多執行緒.IO.集合等,這時候如果想更深層次的學習框架,那麼就要主動回頭學習一下基礎知識,這樣有目的性的學習效果會比你現在死記硬背好多了。
-
8 # 墨子程式設計
關於這個問題,幾乎所有從業者都會以過來人身份建議你:
先把筆試/面試題整明白,把專案中用到的技術學會用,至於 IO 和 執行緒 可以先放一放,以後不斷做專案不斷理解。相信所有從業者都是從這一部分一步一步走過來的,因此建議肯定是有道理的。
但以我們對很多新手在專案中的表現來看,我們還是傾向於先把 IO 和 多執行緒最基本的東西整明白了再繼續向後學習。
另外就是,整明白 IO 和 多執行緒 跟 做專案 並不衝突,兩者可以同時進行。把 IO 和 多執行緒 整明白了有助於做專案,透過做專案可以加深對 IO 和 多執行緒 的理解。
以下簡單介紹一下我們期望新手能夠掌握的 IO 和 多執行緒 知識 以及 我們建議的學習方法。
1、IO部分
這部分內容相對於多執行緒來說容易多了,是初學者可以搞明白的。
在 Java IO 部分,我們建議初學者依次序掌握以下內容:
檔案( 透過 File 類的例項操作 檔案 和 目錄 )流 ( 輸入流/輸出流 、字元流/位元組流 、節點流/過濾流 )順序訪問檔案和隨機訪問檔案物件序列化和反序列化如果以上內容學習起來比較輕鬆,建議再依次序學習以下內容:
JDK 1.7 之前的 NIO ( Buffer 、Channel 、 Selector )
JDK 1.7 之後的 NIO ( 這部分比較多,這裡不羅列 )
這裡與一般圖書資料或影片資料建議的學習順序不太一樣,我們建議初學者先學習 File 類,徹底理解 File 例項的含義,理解 檔案 和 目錄 的區別,理解 檔案元資料 和 檔案內容 的區別,理解字元編碼對檔案的影響,然後再學習 IO 部分。
學習 IO 部分也要講究學習方法,比如學習順序。
雖然傳統 IO 部分涉及的類非常多,但並不是無規律可循,實際上只需要掌握四個類的用法,基本上就可以搞定其它的 IO 類了,這四個類是:
java.io.InputStream
java.io.OutputStream
java.io.Reader
java.io.Writer
以上四個類分別對應了位元組輸入流、位元組輸出流、字元輸入流、字元輸出流。
以其中的 InputStream 為例,該類屬於位元組流,是所有表示位元組輸入流的類的父類,掌握這個類的用法,等同於從根本上掌握了位元組輸入流的用法。另外三個類的地位與 InputStream 類的地位是相同的。
以下以位元組流為例展示傳統 IO 中位元組流的繼承體系:
同樣在學習完我們建議掌握的傳統 IO 知識後,在學習 NIO 時,也可以採用同樣的策略,比如學習 Buffer 可以從最頂層的 Buffer類 學起來,學習 Channel 可以從最頂層的 Channel介面 學起。
2、多執行緒部分
在整個 Java 基礎部分,這部分屬於偏難的,甚至很多高校講到這部分後老師都是略過去或者僅講一下如何建立執行緒、如何啟動執行緒。
雖然說這部分偏難,有些朋友為了相對深入研究這部分,甚至需要惡補一下作業系統知識,但這仍然不是我們要放棄這部分的理由。
實際上,所有的從業者都知道的,真正從事開發工作後,我們所使用的框架和容器基本上都把多執行緒部分封裝了,果真等到做專案時、等到工作後再去琢磨多執行緒,恐怕會廢掉很多人(很多人恐怕再也不會去琢磨多執行緒了)。曾經面試過號稱有五年工作經驗的人,對多執行緒部分甚至連最基本的知識都不能準確作答。
所以我們建議多執行緒部分還是要先掌握一些基礎知識並在剛開始學習的時候就開始琢磨起來,以後工作了做專案時才會有更深的體會,當然也會透過專案更加加深理解。
這部分我們建議初學者依次序掌握以下內容:
作業系統、程式、程序、執行緒之間的關係
執行緒排程方式 ( 協作式/搶佔式 ) 、理解並行和併發
建立執行緒的方法 ( 建議先學 Thread 和 Runnable ,其它先放放 )
執行緒狀態
執行緒排程 ( priority 、yield 、join 、sleep 、demon )
同步和互斥
執行緒通訊 ( wait / notify)
學習以上內容之後,建議在學習以下內容:
多執行緒併發
執行緒通訊 (多執行緒之間有資料傳遞,不僅是 wait 和 notify )
執行緒池
因為這部分內容一旦展開就非常非常多,所以,建議初學者在剛開始不要再繼續深入研究,到此打住。等到工作兩三年後再回來深入研究這部分內容也來得及。
-
9 # 阿里鵬
作為一個過來人,我覺得很多人都會遇到這個問題,剛學習java的時候,如果時間充足,那麼花點時間認真學習多執行緒的理論知識還是不錯的,如果沒那麼多時間,後續要忙於找工作,我覺得可以先放一放,後續工作後再慢慢研究,畢竟大神都是從小白開始的,只要努力沒有學不會的東西,要相信天下沒有難學的技術,相信有心的人都可以做到,加油!
回覆列表
一定不要帶著疑問進入專案的開發。
建議題主可以做一些小案例,例如檔案讀寫,socket通訊來增強對IO的理解,而多執行緒可以手寫一個爬蟲來體會多執行緒的強大之處。