六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

學(xué)習(xí)啦>學(xué)習(xí)方法>通用學(xué)習(xí)方法>學(xué)習(xí)經(jīng)驗>

如何系統(tǒng)有效的學(xué)習(xí)java多線程

時間: 欣怡1112 分享

  Java的培訓(xùn)遍地開花,許多零基礎(chǔ)的學(xué)員準(zhǔn)備學(xué)習(xí)Java,但是對Java語言的認(rèn)識又不全面。為了幫助學(xué)員們更好的學(xué)習(xí)Java,以下是學(xué)習(xí)啦小編分享給大家的學(xué)習(xí)java多線程的建議,希望可以幫到你!

  學(xué)習(xí)java多線程的建議

  1興趣是學(xué)習(xí)的最好老師

  其實最大的困難是在于克服自己。只要你有恒心,學(xué)好Java并不難。就算你沒有基礎(chǔ),沒有經(jīng)驗,沒有任何概念??墒羌词故前l(fā)明Java的人,發(fā)明計算機的人在起初也是一張白紙。

  他們也是不斷琢磨,不斷學(xué)習(xí)和實踐才出結(jié)果的。所有的Java高手都是從什么也不會學(xué)到什么都會的。興趣很重要,只要你有興趣,就會發(fā)現(xiàn)學(xué)習(xí)Java和打籃球一樣簡單。

  2樹立學(xué)習(xí)的信心

  很多初高中生認(rèn)為自己學(xué)不會編程,學(xué)不會Java。其實Java學(xué)習(xí)不同于一般的知識性的學(xué)習(xí),它更側(cè)重于技能。學(xué)IT技術(shù)一定要多練、多寫,能吃苦才行。畢竟第一次接觸要比學(xué)計算機專業(yè)的人肯定理解的慢一些,但是反復(fù)的多看幾遍,多寫幾次,也就好了,所謂的熟能生巧嘛!

  3掌握好的方法

  掌握好的學(xué)習(xí)方法,就是事半功倍的效果。很多同學(xué)在寫代碼的時候,都是照葫畫瓢,沒有自己半點的理解,往往是把從書上背下來的再全堆上去。這樣寫著寫著就沒有了思路,這是缺少編程思想的原因。所以說,理解最重要。一旦建立起編程思想,有了自己的想法,寫東西自然就會容易多了!

  4堅持到底

  Java剛開始的時候相對還是簡單一些,大家都還有學(xué)習(xí)的積極性。越到后面越難,很多人開始打退堂鼓,甚至產(chǎn)生想要放棄的念頭。這和爬山是一個道理,你都快到山頂了,肯定是走不動了,但是如果再堅持一下下,就會看到勝利的日出。

  二 或許大家說這一些都太老套,根本不夠具體,我想說每個人的環(huán)境不同方法也就不同,我說一下我的學(xué)習(xí)方法

  1明確面向?qū)ο蟮姆懂?/p>

  我們必須明確一個大方向,也就是說現(xiàn)在面向?qū)ο蟮木幊谭懂?。盡管人工智能曾經(jīng)有所浪潮(看看Borland為什么有Turbo Prolog),但未來5-10年工業(yè)界廣泛承認(rèn)并接受的將是面向?qū)ο笫降木幊?。java至少5到10年是不會淘汰的。

  工業(yè)界目前最流行的面向?qū)ο缶幊陶Z言就是C++和Java。所以基本上鎖定這兩個方向就可以了。而且完全可以同時掌握。

  2掌握J(rèn)ava的精華特性

  掌握J(rèn)ava的精華特性的同時,一定要知道為什么。比如,Interface和multi-thread。用interface是更好的多繼承的模型,而多線程則是設(shè)計到語言一級的重要特性。要完全理解interface是為什么,用多線程又有幾種常用的編程模型。

  3開始進(jìn)行設(shè)計

  理解了語言的特性是為什么了之后,就可以試著上升到設(shè)計這個層次,畢竟學(xué)習(xí)語言是要用的。目前比較好的開發(fā)模式是采用自定向下的面向?qū)ο蟮脑O(shè)計,加上MVC的模式(你可以看一下我介紹的關(guān)于MVC的內(nèi)容)。首先要找出最頂層的對象(這往往是最難的),然后一層一層往下遞歸,記住每次應(yīng)符合7+/-2的原則,因為我們?nèi)说亩逃洃浘褪沁@樣。一般有圖形用戶界面的應(yīng)從界面開始設(shè)計。

  4學(xué)習(xí)設(shè)計模式

  有了基本設(shè)計模型后,可以學(xué)一些設(shè)計模式(Design Pattern)。這是目前證明很有效的。比如體系結(jié)構(gòu)模式(Layering分層,Pipe/Filter管道或過濾器),設(shè)計模式(有很多,比如對象池Object Pool、緩沖池Cache等),編程模式(比如Copy-on-Write)。

  懂了這些模式之后,就會對系統(tǒng)的整體結(jié)構(gòu)有很好的把握,而學(xué)術(shù)上也有傾向一個系統(tǒng)完全可以由各種模式組合而成。前面提到的MT實際上就有好幾種模式,掌握后就不用自己花很多時間去試了。另外一個很重要的領(lǐng)域就是并行和分布式計算領(lǐng)域,大概有20種左右。

  5進(jìn)行編程實踐

  接下來就不能紙上談兵了,最好的方法其實是實踐。一般教科書上的例子并不能算是實踐,只能算是讓你掌握語言特性用的。而提倡做實際的Project也不是太好,因為你還沒有熟練的能力去綜合各種技術(shù),這樣只能是你自己越來越迷糊。

  我認(rèn)為比較好的方法是找一些比較經(jīng)典的例子,每個例子比較集中一種編程思想而設(shè)計的,比如在我的實踐當(dāng)中,我曾經(jīng)學(xué)習(xí)過一個很經(jīng)典的例子就是用Java實現(xiàn)的HotDraw(源自SmallTalk),你可以用rolemodel或hotdraw在搜索引擎上找一下,我記不大清楚了。好象 是個網(wǎng)站,上面有原代碼和一些基本設(shè)計的文檔。

  另一個來源可以到 是個不錯的文檔基地。從HotDraw上我學(xué)到了什么是Framework,以及如何用rolemodel的方式來構(gòu)造,這樣我就可以應(yīng)用到其他的地方。順便說一句,這個例子你絕對不會覺得小,只會覺得大,并且他還是真正的商用的Framework。

  6學(xué)習(xí)修改經(jīng)典例子

  結(jié)合前面學(xué)到的設(shè)計模式你就可以很好的理解這些經(jīng)典的例子。并且自己可以用他來實現(xiàn)一些簡單的系統(tǒng)。如果可以對他進(jìn)行進(jìn)一步的修改,找出你覺得可以提高性能的地方,加上自己的設(shè)計,那就更上一個層次了,也就會真正地感到有所收獲。

  好象以上談的跟Java沒什么關(guān)系,其實我們早就應(yīng)該從單純的學(xué)習(xí)語言到真正的學(xué)習(xí)好編程的領(lǐng)域。學(xué)習(xí)技術(shù)是沒有止境的,你學(xué)習(xí)第一種語言可能要半年時間,以后每種語言都不應(yīng)該超過兩個月,否則你會覺得學(xué)習(xí)語言是包袱,是痛苦。

  Java的技術(shù)點和知識點歸納

  1. JVM相關(guān)(包括了各個版本的特性)

  對于剛剛接觸Java的人來說,JVM相關(guān)的知識不一定需要理解很深,對此里面的概念有一些簡單的了解即可。不過對于一個有著3年以上Java經(jīng)驗的資深開發(fā)者來說,不會JVM幾乎是不可接受的。

  JVM作為java運行的基礎(chǔ),很難相信對于JVM一點都不了解的人可以把java語言吃得很透。我在面試有超過3年Java經(jīng)驗的開發(fā)者的時候, JVM幾乎就是一個必問的問題了。當(dāng)然JVM不是唯一決定技術(shù)能力好壞的面試問題,但是可以佐證java開發(fā)能力的高低。

  在JVM這個大類中,我認(rèn)為需要掌握的知識有:

  JVM內(nèi)存模型和結(jié)構(gòu)

  GC原理,性能調(diào)優(yōu)

  調(diào)優(yōu):Thread Dump, 分析內(nèi)存結(jié)構(gòu)

  class 二進(jìn)制字節(jié)碼結(jié)構(gòu), class loader 體系 , class加載過程 , 實例創(chuàng)建過程

  方法執(zhí)行過程:Java各個大版本更新提供的新特性(需要簡單了解)

  2. Java的運行(基礎(chǔ)必備)

  這條可能出看很簡單,java程序的運行誰不會呢?不過很多時候, 我們只是單純通過IDE去執(zhí)行java程序,底層IDE又是如何執(zhí)行java程序呢?很多人并不了解。

  這 個知識點是最最基本的java開發(fā)者需要掌握的,初學(xué)java,第一個肯定是教你如何在命令行中執(zhí)行java程序,但是很多人一旦把java學(xué)完 了,IDE用上了,就把這個都忘了。為什么強調(diào)要知道這個呢,知道了java最純粹的啟動方式之后,你才能在啟動出問題的時候,去分析當(dāng)時啟動的目錄多 少,執(zhí)行命名如何,參數(shù)如何,是否有缺失等。 這樣有利于你真正開發(fā)中去解決那些奇奇怪怪的可能和環(huán)境相關(guān)的問題。

  在這里需要掌握的知識有:

  javac 編譯java文件為 class 文件

  java 命令的使用, 帶package的java類如何在命令行中啟動

  java程序涉及到的各個路徑(classpath, java。library。path, java運行的主目錄等)

  3. 數(shù)據(jù)類型

  這條沒有什么好多說的,無非就是Java中的基本類型和對象類型的掌握??梢栽倭私庖恍㎎DK如何自動轉(zhuǎn)換方面的知識,包括裝箱拆箱等,還要注意避免裝箱之后的類型相等的判斷

  主要知識點:

  基本類型: int, long, float, double, boolean , 。。。

  對應(yīng)的對象類型: Integer 等類型到基本類型的轉(zhuǎn)換, 裝箱和拆箱

  Object類型: equals, hashcode

  String 類型的特點

  4. 對象和實例,對象的創(chuàng)建

  在這方面,開發(fā)者需要了解class和instance的概念以及之間的差別, 這是java面向?qū)ο筇匦缘囊粋€基礎(chǔ)。主要知識點有:

  Class和 Instance 的概念;

  Instance 創(chuàng)建的過程:1. 無繼承:分配內(nèi)存空間, 初始化變量, 調(diào)用構(gòu)造函數(shù);2.有繼承:處理靜態(tài)動作, 分配內(nèi)存空間, 變量定義為初始值 , 從基類->子類, 處理定義處的初始化, 執(zhí)行構(gòu)造方法;

  需要注意的點:靜態(tài)屬性等從基類->子類進(jìn)行初始化;默認(rèn)無參構(gòu)造方法相關(guān)的特性。

  5. 訪問控制

  這也是java封裝特性的一個基礎(chǔ),需要掌握的有:

  public protected default private 對于class, method, field 的修飾作用

  6. 流程控制

  Java 流程控制的基礎(chǔ), 雖然有些語法不一定很常用,但是都需要了解,并且在合適的地方使用它們。

  需要掌握的有:if, switch, loop, for, while 等流程控制的語法

  7. 面向?qū)ο缶幊痰母拍?/p>

  這 是一個java的核心概念,對于任何java開發(fā)者都需要熟練掌握。Java中很多特性或者說知識點都是和java面向?qū)ο缶幊谈拍钕嚓P(guān)的。在我的理解, 一個好的開發(fā)者不僅僅需要了解這些特性(知識點)本身,也更需要知道這些對象在java的面向?qū)ο缶幊谈拍钪惺侨绾误w現(xiàn)出來的,這樣更有利于開發(fā)者掌握 java這門開發(fā)語言,以及其他面向?qū)ο缶幊痰恼Z言。在這里只是簡單羅列了一下,主要的知識點包括有:

  面向?qū)ο笕筇匦裕悍庋b,繼承,多態(tài); 各自的定義概念,有哪些特性體現(xiàn)出來,各自的使用場景

  靜態(tài)多分派,動態(tài)單分派的概念

  重載的概念和使用

  繼承:接口多實現(xiàn),基類單繼承

  抽象,抽象類,接口

  多態(tài):方法覆蓋的概念和使用

  接口回調(diào)

  Java語言的8個特性

  1、簡 單

  Java設(shè)計目的是讓專業(yè)程序員覺得既易學(xué)又好用。假設(shè)你有編程經(jīng)歷,你將不覺得Java難掌握。如果你已經(jīng)理解面向?qū)ο缶幊痰幕靖拍?,學(xué)習(xí)Java將更容易。如果你是一個經(jīng)驗豐富的C++程序員,那就最好了,學(xué)習(xí)Java簡直不費吹灰之力。因為Java承C/C++語法和許多C++面向?qū)ο蟮奶匦?,大多?shù)程序員在學(xué)習(xí)Java時都不會覺得太難。另外,C++中許多容易混淆的概念,或者被Java棄之不用了,或者以一種更清楚、更易理解的方式實現(xiàn)。

  除了和C/C++類似以外,Java的另外一個屬性也使它更容易學(xué)習(xí):設(shè)計人員努力使Java中不出現(xiàn)顯得讓人吃驚的特性。在Java中,很少明確地告訴你如何才能完成一項特定的任務(wù)。

  2、面向?qū)ο?/p>

  盡管受到其前輩的影響,但Java沒被設(shè)計成兼容其他語言源代碼的程序。這允許Java開發(fā)組自由地從零開始。這樣做的一個結(jié)果是,Java語言可以更直接、更易用、更實際的接近對象。通過對近幾十年面向?qū)ο筌浖?yōu)點的借鑒,Java設(shè)法在純進(jìn)化論者的“任何事物都是一個對象”和實用主義者的“不討論對象不對象”的論點之間找到了平衡。Java的對象模型既簡單又容易擴展,對于簡單數(shù)據(jù)類型,例如整數(shù),它保持了高性能,但不是對象。

  3、健 壯

  萬維網(wǎng)上多平臺的環(huán)境使得它對程序有特別的要求,因為程序必須在許多系統(tǒng)上可靠地執(zhí)行。這樣,在設(shè)計Java時,創(chuàng)建健壯的程序被放到了高度優(yōu)先考慮的地位。為了獲得可靠性,Java在一些關(guān)鍵的地方限制你,強迫你在程序開發(fā)過程中及早發(fā)現(xiàn)錯誤。同時,Java使你不必?fù)?dān)心引起編程錯誤的許多最常見的問題。因為Java是一種嚴(yán)格的類型語言,它不但在編譯時檢查代碼,而且在運行時也檢查代碼。事實上,在運行時經(jīng)常碰到的難以重現(xiàn)的、難以跟蹤的許多錯誤在Java中幾乎是不可能產(chǎn)生的。要知道,使程序在不同的運行環(huán)境中以可預(yù)見的方式運行是Java的關(guān)鍵特性。

  為更好理解Java是如何具有健壯性的,讓我們考慮使程序失敗的兩個主要原因:內(nèi)存管理錯誤和誤操作引起的異常情況(也就是運行時錯誤)。在傳統(tǒng)的編程環(huán)境下,內(nèi)存管理是一項困難、乏味的任務(wù)。例如,在C/C++中,程序員必須手工地分配并且釋放所有的動態(tài)內(nèi)存。這有時會導(dǎo)致問題,因為程序員可能忘記釋放原來分配的內(nèi)存,或者釋放了其他部分程序正在使用的內(nèi)存。Java通過替你管理內(nèi)存分配和釋放,可以從根本上消除這些問題(事實上,釋放內(nèi)存是完全自動的,因為Java為閑置的對象提供內(nèi)存垃圾自動收集)。在傳統(tǒng)的環(huán)境下,異常情況可能經(jīng)常由“被零除”或“文件未找到”這樣的情況引起,而我們又必須用既繁多又難以理解的一大堆指令來對它們進(jìn)行管理。Java通過提供面向?qū)ο蟮漠惓L幚頇C制來解決這個問題。一個寫得很好的Java程序,所有的運行時錯誤都可以并且應(yīng)該被你的程序自己進(jìn)行管理。

  4、多線程

  設(shè)計Java的目標(biāo)之一是為了滿足人們對創(chuàng)建交互式網(wǎng)上程序的需要。為此,Java支持多線程編程,因而你用Java編寫的應(yīng)用程序可以同時執(zhí)行多個任務(wù)。Java運行時系統(tǒng)在多線程同步方面具有成熟的解決方案,這使你能夠創(chuàng)建出運行平穩(wěn)的交互式系統(tǒng)。Java的多線程機制非常好用,因而你只需關(guān)注程序細(xì)節(jié)的實現(xiàn),不用擔(dān)心后臺的多任務(wù)系統(tǒng)。

  5、結(jié)構(gòu)中立

  Java設(shè)計者考慮的一個主要問題是程序代碼的持久性和可移植性。程序員面臨的一個主要問題是,不能保證今天編寫的程序明天能否在同一臺機器上順利運行。操作系統(tǒng)升級、處理器升級以及核心系統(tǒng)資源的變化,都可能導(dǎo)致程序無法繼續(xù)運行。Java設(shè)計者對這個問題做過多種嘗試,Java虛擬機(JVM)就是試圖解決這個問題的。他們的目標(biāo)是“只要寫一次程序,在任何地方、任何時間該程序永遠(yuǎn)都能運行”。在很大程度上,Java實現(xiàn)了這個目標(biāo)。

  6、解釋性和高性能

  前面已提到,通過把程序編譯為Java字節(jié)碼這樣一個中間過程,Java可以產(chǎn)生跨平臺運行的程序。字節(jié)碼可以在提供Java虛擬機(JVM)的任何一種系統(tǒng)上被解釋執(zhí)行。早先的許多嘗試解決跨平臺的方案對性能要求都很高。其他解釋執(zhí)行的語言系統(tǒng),如BASIC,Tcl,PERL都有無法克服的性能缺陷。然而,Java卻可以在非常低檔的CPU上順利運行。前面已解釋過,Java確實是一種解釋性語言,Java的字節(jié)碼經(jīng)過仔細(xì)設(shè)計,因而很容易便能使用JIT編譯技術(shù)將字節(jié)碼直接轉(zhuǎn)換成高性能的本機代碼。Java運行時系統(tǒng)在提供這個特性的同時仍具有平臺獨立性,因而“高效且跨平臺”對Java來說不再矛盾。

  7、分布式

  Java為Internet的分布式環(huán)境而設(shè)計,因為它處理TCP/IP協(xié)議。事實上,通過URL地址存取資源與直接存取一個文件的差別是不太大的。Java原來的版本(Oak)包括了內(nèi)置的地址空格消息傳遞(intra-address-space)特性。這允許位于兩臺不同的計算機上的對象可以遠(yuǎn)程地執(zhí)行過程。Java最近發(fā)布了叫做遠(yuǎn)程方法調(diào)用(RemoteMethodInvocation,RMI)的軟件包,這個特性使客戶機/服務(wù)器編程達(dá)到了無與倫比的抽象級。

  8、動 態(tài)

  Java程序帶有多種的運行時類型信息,用于在運行時校驗和解決對象訪問問題。這使得在一種安全、有效的方式下動態(tài)地連接代碼成為可能,對小應(yīng)用程序環(huán)境的健壯性也十分重要,因為在運行時系統(tǒng)中,字節(jié)碼內(nèi)的小段程序可以動態(tài)地被更新。

猜你喜歡:

1.JAVA并發(fā)多線程的面試問題及答案解析

2.java實習(xí)報告范文3篇

3.JAVA并發(fā)多線程的面試問題及答案

4.如何系統(tǒng)有效的學(xué)習(xí)java api

5.如何系統(tǒng)有效的學(xué)習(xí)java me

3744135