Writer 抽象類, 定義抽象方法write() 每次寫出一個字符
|-- OutputStreamWriter 也是過濾器, 將char序列編碼為byte序列
| 底層也是依賴基本的byte輸出流
|-- PrintWriter 是過濾器, 提供了常用方法println()
| 非常常見的文本處理方法
|-- FileWriter = OutputStreamWriter + FileOutputStream
| 不能指定文本輸出編碼, 不好用!
11 Java 多線程編程
1) 程序: 指令+數(shù)據(jù)的byte序列, 如: qq.exe
2) 進(jìn)程: 正在運行的程序, 是程序動態(tài)的執(zhí)行過程(運行于主存儲器)
3) 線程: 在進(jìn)程內(nèi)部, 并發(fā)運程的過程(方法)
4) 并發(fā): 進(jìn)程是并發(fā)運行的, OS將時間劃分為很多時間片段, 盡可能 均勻分配給正在運行的程序, 微觀上進(jìn)程走走停停, 宏觀上都在運行這種都運行的現(xiàn)象叫: 并發(fā), 但是不是絕對意義上的"同時"
12 Java 創(chuàng)建一個線程
1)Thread 類: 線程包含一個可以運行的過程(方法)Thread 類中包含方法 run
2) 創(chuàng)建一個具體線程, 需要繼承于Thread類
3) 覆蓋run 方法(就是更新運行過程), 實現(xiàn)用戶自己的過程
4) 創(chuàng)建線程實例(一個線程)
5) 使用線程實例的start() 方法啟動線程, 啟動以后線程會盡快的去并發(fā)執(zhí)行run()
13 線程的狀態(tài)
1 new 新建
2 Runnable 可以運行(就緒)
3 Running 運行(正在運行)
4 Block 阻塞 掛起
5 Dead 死亡
14 線程狀態(tài)管理:
1)讓出CPU
Thread.yield() 當(dāng)前線程讓出處理器(離開Running), 使當(dāng)前線程進(jìn)入Runnable等待
2)休眠
Thread.sleep(times) 使當(dāng)前線程從 Running 放棄處理器進(jìn)入Block狀態(tài), 休眠times毫秒, 再返回到Runnable如果其他線程打斷當(dāng)前線程的Block(sleep), 就會發(fā)生InterruptedException.
15 線程的常用屬性
1)線程的優(yōu)先級 (資源緊張時候, 盡可能優(yōu)先)t3.setPriority(Thread.MAX_PRIORITY); 默認(rèn)有10 優(yōu)先級, 優(yōu)先級高的線程獲得執(zhí)行的機(jī)會多. 機(jī)會 的多少不能通過代碼干預(yù).默認(rèn)的優(yōu)先級是 5
2)后臺線程(守護(hù)線程, 精靈線程)
t1.setDaemon(true); Java進(jìn)程的結(jié)束: 當(dāng)前所有前臺線程都結(jié)束時, Java進(jìn)程結(jié)束 后臺線程, 不管是否結(jié)束, 都被停掉! 因為并發(fā)的現(xiàn)象, 后臺線程不會立即結(jié)束!
3) 線程名字
getName()
4) 當(dāng)前線程
Thread main = Thread.currentThread();
16 兩種方式創(chuàng)建線程
1)繼承Thread類
a 繼承Thread類, 覆蓋run()方法, 提供并發(fā)運程的過程
b 創(chuàng)建這個類的實例
c 使用start() 方法啟動線程
2)實現(xiàn)Runnable接口
a 實現(xiàn)Runnable接口, 實現(xiàn)run()方法, 提供并發(fā)運程的過程
b 創(chuàng)建這個類的實例, 用這個實例作為Thread構(gòu)造器參數(shù)
創(chuàng)建Thread類.
c 使用start() 方法啟動線程
class Foo implements Runnable{
public void run(){
//....
}
}
Thread t = new Thread(new Foo());
t.start();
3)使用 內(nèi)部類/匿名類 創(chuàng)建線程
17 Sleep 的打斷喚醒
1) Thread.sleep(times) 使當(dāng)前線程從 Running 放棄處理器
進(jìn)入Block狀態(tài), 休眠times毫秒, 再返回到Runnable
2)一個線程可以提前喚醒另外一個sleep Block的線程
interrupt() 打斷/中斷
3) 被喚醒線程出現(xiàn) 中斷異常
13) 異步, 同步
1) 異步: 并發(fā), 各干自己的: 如: 一群人上卡車
2) 同步: 步調(diào)一致的處理, 如: 一群人上公交車, "倫敦制"
14) 案例異步寫文件
1) 一個線程負(fù)責(zé)將控制臺信息讀取到內(nèi)存緩沖區(qū)(集合)如果控制臺輸入quit 將結(jié)束輸入. 中斷寫出線程
2) 一個線程負(fù)責(zé)將緩沖區(qū)中的信息寫到硬盤文件
每次檢查緩沖區(qū)是否有數(shù)據(jù), 如果有就寫出, 直到空為止如果沒有數(shù)據(jù)就休眠5秒
寫出線程是后臺線程, 可以自動結(jié)束
3) 緩沖區(qū)采用隊列(FIFO)的工作方式
1 兩種方式創(chuàng)建線程
1)繼承Thread類
a 繼承Thread類, 覆蓋run()方法, 提供并發(fā)運程的過程
b 創(chuàng)建這個類的實例
![]() | ![]() .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 |
![]() | ![]() .. 定價:¥124 優(yōu)惠價:¥124.0 更多書籍 |