Java高級特性

集合框架和泛型

虛線框代表接口 實線框代表類
空心箭頭代表有繼承關系

Collection 代表著一個集合框架 ,各種類型集合接口的一個父接口
Collections是指對集合提供一些算法的算法類
了解輸入輸出的概念
初步掌握Java通過什么API來操作文件或目錄
java中的File文件,可以指文件也可以指一個目錄
java輸入輸出是站在程序角度上看的
java.IO.File用于操作文件或者目錄
java中路徑寫法:

File類的常用方法:

流是一組有序的數(shù)據(jù)序列
以先進先出的方式發(fā)送信息的通道

InputStream字節(jié)輸入流(抽象類-基類)

字節(jié)輸入流--讀
InputStream抽象父類-FileInputStream子類
常用方法:read()幾個重載方法作用不同
int read();
從輸入流一個字節(jié)一個字節(jié)的讀,返回的是該字節(jié)的整數(shù)表示形式,如果讀到了輸入流的末尾,返回-1
int read (byte[] b):
從輸入流讀取若干字節(jié),將這些字節(jié)保存到數(shù)組b中。返回的是讀取到的字節(jié)數(shù),如果讀到了輸入流的末尾,返回-1
int read(byte[] b , int off, int len):
從輸入流讀取若干字節(jié),將這些字節(jié)保存到數(shù)組b中。off值得是字節(jié)數(shù)組中開始保存數(shù)據(jù)的起始下標。len指的是讀取的字節(jié)數(shù)目,返回的是實際讀取到的字節(jié)數(shù),如果讀到了輸入流的末尾,返回-1




以上這個方法有誤,會出現(xiàn)空格


解決亂碼問題

BufferReader



關閉流的原則:先開的后關,后開的先關
多線程
一個進程同時運行多個線程,用來完成不同的工作,則稱之為多線程。多個線程交替占用資源,而非真正的并行執(zhí)行。
為什么學習多線程?
*多線程在軟件開發(fā)領域有著重要地位
*多線程開發(fā)優(yōu)點明顯
*多線程是絕大多數(shù)面試必問點
多線程的優(yōu)勢:
*充分利用CPU資源,提升代碼性能
*簡化編程模型,更好的軟件設計和架構
*帶來良好的用戶體驗
進程:應用程序的執(zhí)行實例,有獨立的內存空間和系統(tǒng)資源。
線程:CPU調度和分派的基本單元,CPU運算的最小單位,可完成一個獨立的順序控制流程。
進程(運行程序)-->線程(程序的一個個任務)
CPU(工廠)-->進程(車間)-->線程(工人)
主線程:
main()方法即為主線程入口
產生其他子線程的線程
必須最后完成,因為他執(zhí)行各種關閉操作

如何通過繼承Thread創(chuàng)建和啟動線程
1.定義MyThread類繼承Thread類(extends Thread)
2.重寫run()方法,編寫線程執(zhí)行體
3.創(chuàng)建MyThread線程對象,調用start()方法啟動線程


這里不可以調用run()方法:
(1)只有主線程一個執(zhí)行路徑
(2)依次執(zhí)行了兩次run()方法

實現(xiàn)Runnable創(chuàng)建線程
(1)定義MyRunnable類實現(xiàn)Runnable接口
(2)實現(xiàn)run()方法,編寫線程執(zhí)行體
(3)創(chuàng)建線程對象,調用start()方法啟動線程



在java中創(chuàng)建線程的兩種方式
繼承java.lang.Thread 類
*編寫簡單,可直接操作線程,適用于單繼承
實現(xiàn)java.lang.Runnable接口
*避免單繼承局限性,便于資源共享
推薦使用實現(xiàn)Runnable接口方式創(chuàng)建線程


線程狀態(tài)

線程調度和線程有優(yōu)先級

線程調度:優(yōu)先級和睡眠
讓線程暫時進入睡眠指定時長,線程進入阻塞狀態(tài)

以上這兩種都叫做讓線程休眠的方法。
線程調度join();

線程調度yield();(線程的禮讓)
暫停當前線程,允許其他具有相同優(yōu)先級的線程獲得運行機會。
該線程處于就緒狀態(tài),不轉為阻塞狀態(tài)。
yield只是提供一種可能,但不能保證一定實現(xiàn)了禮讓。

多線程共享數(shù)據(jù)
可能帶來的問題:
數(shù)據(jù)不安全
原因:多線程共同操作數(shù)據(jù)時,引發(fā)的沖突(如延遲,操作未全部完成等)



對象在網(wǎng)絡編程中的傳遞就是一個序列化和反序列化的過程
