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