20145204 《Java程序设计》第6周学习总结
20145204 《Java程序設(shè)計(jì)》第6周學(xué)習(xí)總結(jié)
教材學(xué)習(xí)內(nèi)容總結(jié)
第十章 輸入/輸出
數(shù)據(jù)流
InputStream與OutputStream
InputStream不關(guān)心數(shù)據(jù)源來自何種設(shè)備(鍵盤,文件,網(wǎng)絡(luò));
OutputStream不關(guān)心數(shù)據(jù)的目的是何種設(shè)備(鍵盤,文件,網(wǎng)絡(luò))提供串流基本操作,如果想要為輸入/輸出的數(shù)據(jù)做加工處理,則可以使用打包器類。
子類一: FileInputStream,FileOutputStream。適用于文件的創(chuàng)建和讀寫。這兩個(gè)子類在不使用時(shí)都要用close()關(guān)閉文檔。
子類二:ByteArryInputStream,ByteArryOutputStream。指定byte數(shù)組創(chuàng)建實(shí)例,一旦創(chuàng)建就可將byte數(shù)組當(dāng)做數(shù)據(jù)源進(jìn)行讀寫。
Reader與Writer
第十一章 線程與并行API線程
線程
單線程:
啟動(dòng)的程序從main()程序進(jìn)入點(diǎn)開始至結(jié)束只有一個(gè)流程。多線程:要設(shè)計(jì)程序可以擁有多個(gè)程序。即在main以外獨(dú)立設(shè)計(jì)流程。
實(shí)現(xiàn)多線程
并行API
使用Thread建立多線程程序,必須親自處理synchornized、對(duì)象鎖定、wait()、notify()、notifyAll()等細(xì)節(jié),如果需要的是線程池、讀寫解鎖高等級(jí)操作,從JDK5之后提供了java.util.concurrent,可基于其中的API建立更穩(wěn)固的并行應(yīng)用程序。
并行API可以分為以下幾個(gè)類.
1.Lock、ReadWriter與Condition
2.使用Executor
3.并行Collection
Lock、ReadWriteLock
lock接口主要操作類之一為ReentrantLock,可以達(dá)到synchronized的作用。
- ReadWriteLock接口定義了讀取鎖定與寫入鎖定行為,可以使用readLock()、writeLock()方法返回Lock操作對(duì)象。
StampedLock類可支持了樂觀讀取操作。也就是若讀取線程很多,寫入線程很少的情況下,你可以樂觀地認(rèn)為,寫入與讀取同時(shí)發(fā)生的機(jī)會(huì)很少,因此不悲觀的使用哇暖的讀取鎖定,程序可以查看數(shù)據(jù)讀取之后,是否遭到寫入線程的變更,再采取后續(xù)的措施。
代碼調(diào)試中的問題和解決過程
如上圖所示,用紅線標(biāo)注的地方是我習(xí)慣性的刪減代碼所導(dǎo)致的錯(cuò)誤,將鼠標(biāo)光標(biāo)移動(dòng)到該錯(cuò)誤的位置顯示如下圖:
說是一定要用數(shù)組的形式定義,我仔細(xì)看了看代碼,想這可能是由于代碼中下面這句代碼的原因。
boolean sleep=flags[(int)((Math.random()*10)%2)];于是我就直接將代碼修改改成這樣:private boolean flags[]={};
結(jié)果是沒有兔子的身影:
于是利用剛學(xué)的斷點(diǎn)調(diào)試程序發(fā)現(xiàn)flags的值是null:
終于經(jīng)過了認(rèn)真排查有了正確結(jié)果顯示:
如果再運(yùn)行一次會(huì)出現(xiàn)不一樣的結(jié)果:
本周代碼托管截圖
其他(感悟、思考等,可選)
本周在經(jīng)過一次試驗(yàn)后,我覺得對(duì)于java的運(yùn)行環(huán)境有新的了解,對(duì)于代碼調(diào)試什么的有可以熟練的運(yùn)用對(duì)于我將來的自己編代碼有了很大的用處。而且本周還解決了一直對(duì)于java的包,類,項(xiàng)目的關(guān)系的理解,受益頗深。
學(xué)習(xí)進(jìn)度條
| 目標(biāo) | 3500行 | 30篇 | 400小時(shí) | |
| 第一周 | 100/100 | 1/1 | 20/20 | |
| 第二周 | 200/300 | 1/2 | 30/50 | |
| 第三周 | 300/600 | 1/3 | 28/78 | |
| 第四周 | 300/900 | 1/4 | 20/98 | |
| 第五周 | 300/900 | 1/5 | 30/128 | |
| 第六周 | 300/1200 | 2/6 | 32/ 160 |
參考資料
- Java學(xué)習(xí)筆記(第8版)
- 《Java學(xué)習(xí)筆記(第8版)》學(xué)習(xí)指導(dǎo)
- ...
轉(zhuǎn)載于:https://www.cnblogs.com/yayaer/p/5376320.html
總結(jié)
以上是生活随笔為你收集整理的20145204 《Java程序设计》第6周学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL大数据查询优化
- 下一篇: Java中instanceof用法