更新時間:2019-12-16 17:01:07 來源:動力節點 瀏覽2459次
我們在學習Java編程的時候要循循漸進,多練習,多實踐,基礎理論當然也是必不可少的,今天小編就來分享一些在動力節點學習的同學總結出的5大必學知識點,一起來看看吧:
1.什么是線程
線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。
2.線程和進程有什么區別?
簡而言之,一個程序至少有一個進程,一個進程至少有一個線程. 線程的劃分尺度小于進程,使得多線程程序的并發性高。另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。從邏輯角度來看,多線程的意義在于一個應用程序中,有多個執行部分可以同時執行。但操作系統并沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。
3.如何在Java中實現線程?
在語言層面有兩種方式。java.lang.Thread 類的實例就是一個線程但是它需要調用java.lang.Runnable接口來執行,由于線程類本身就是調用的Runnable接口所以你可以繼承java.lang.Thread類或者直接調用Runnable接口來重寫run()方法實現線程。
4.Java內存模型是什么?
Java內存模型規定和指引Java程序在不同的內存架構、CPU和操作系統間有確定性地行為。它在多線程的情況下尤其重要。Java內存模型對一個線程所做的變動能被其它線程可見提供了保護,它們之間是先行發生關系。這個關系定義了一些規則讓程序員在并發編程時思路更清晰。比如,先行發生關系確保了:
線程內的代碼能夠按先后順序執行,這被稱為程序次序規則。
對于同一個鎖,一個解鎖操作一定要發生在時間上后發生的另一個鎖定操作之前,也叫做管程鎖定規則。
前一個對volatile的寫操作在后一個volatile的讀操作之前,也叫volatile變量規則。
一個線程內的任何操作必需在這個線程的start()調用之后,也叫作線程啟動規則。
一個線程的所有操作都會在線程終止之前,線程終止規則。
一個對象的終結操作必需在這個對象構造完成之后,也叫對象終結規則。
5.Java中如何停止一個線程?
Java提供了很豐富的API但沒有為停止線程提供API。JDK 1.0本來有一些像stop(), suspend() 和 resume()的控制方法但是由于潛在的死鎖威脅因此在后續的JDK版本中他們被棄用了,之后JavaAPI的設計者就沒有提供一個兼容且線程安全的方法來停止一個線程。當run() 或者 call() 方法執行完的時候線程會自動結束,如果要手動結束一個線程,你可以用volatile 布爾變量來退出run()方法的循環或者是取消任務來中斷線程。
當然,必學知識也不只有以上五點,如果你真的想要學Java,還需要更加系統性的學習,如有疑問,請在線咨詢,有專業老師隨時為你服務。
Java全套自學資料
Java自學視頻教程(免費學習):http://www.dabaquan.cn/video.html
Java技術教程:http://www.dabaquan.cn/tutorial/
相關文章
相關閱讀
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習