java.io.InputStream
,輸出串流爲java.io.OutputStream
,無須理會來源或目的真正形式。InputStream
和OutputStream
時,必須使用close()
關閉串流,可是JDK7會嘗試自動關閉資源語法。System.in
與System.out
分別是InputStream
與OutputStream
的實例,分別表明標準是輸入與標準輸出。System
的setIn()
方法指定InputStream
實例,指定標準輸入來源。Syste
m的setOut()
方法指定PrintStream
實例,將結果輸出至指定的目的地。System.erro
爲PrintSteam
實例,稱之爲標準錯誤輸出串流,用來當即顯示錯誤訊息。System.err
輸出的訊息必定會顯示在文本模式中,沒法從新導向。System.setErr()
指定PrintStream
,指定標準錯誤輸出串流。FileInputStream
是InputStream
的子類,能夠指定文件名建構實例,一旦建構檔案就開啓,接着就可用來讀取數據。FileOutputStream
是OutputStream
的子類,能夠指定文件名建構實例,一旦建構檔案就開啓,接着就能夠用來寫出數據。FileInputStream
或FileOutputStream
,不使用時都要使用close()
關閉檔案。FileInputStream
主要實做了InputStream
的read()
抽象方法,使之可從檔案中讀取數據。FileOutputStream
主要實做了OutputStream
的write()
抽象方法,使之可寫出數據至檔案 。DataInputStream
、DataOutputStream
提供讀取、寫入Java基本數據型的方法,像是讀寫int、double、 boolean
等的方法。若是在做對象串行化時,對象中某些數據成員不但願被寫入,則能夠標上transient
關鍵詞。html
main()
之外獨立設計流程,能夠撰寫類別實做java.lang.Runnable接口,流程的進入點是實做在run()
方法中。run()
方法中以外,另外一個撰寫多線程程序的方式,是繼承Thread類別,從新定義run()方法。setPriority()
方法設定優先權:
IllegalArgumentException
。interrupt()
方法,讓它離開Blocked狀態。join()
方法完成需求。join()
加入至另外一線程時,另外一線程會等待被加入的線程工做完畢,而後再繼續它的動做。java.lang.ThreadGroup
類別能夠管理羣組中的線程,可使用如下方式產生羣組,並在產生線程時指定所屬羣組:java
ThreadGroup threadGroup1 = new ThreadGroup("group1"); ThreadGroup threadGroup2 = new ThreadGroup("group2"); Thread thread1 = new Thread(threadGroup1, "group1's member"); Thread thread2 = new Thread(threadGroup2 "group2's member");
enumerate()
方法。ThreadGroup
中的線程發生例外時:
ThreadGroup
有父ThreadGroup
,就會呼叫父ThreadGroup
的uncaughtException()
方法。Thread
是否使用setUncaughtExceptionHandler()
方法設定Thread.UncaughtExceptionHandler
實例,有的話就會呼叫其uncaughtException()
方法。ThreadDeath
實例,若「是」什麼都不做,若「否」則呼叫例外的printStrackTrace()
。Collection
與Map
,都未考慮線程安全。java.util.concurrent.locks
套件中提供Lock
、ReadWriteLock
、Condition
接口以及相關實做類別,能夠提供相似synchronized
、wait()
、notify()
、notifyAll()
的做用,以及更多高階功能。Lock
接口還定義了tryLock()
方法,若是線程呼叫tryLock()
能夠取得鎖定會傳回true
,若沒法取得鎖定傳回false
。BlockingQueue
是Queue
的子界面:
put()
方法,在隊列已滿的狀況下會被阻斷。take()
方法,在隊列爲空的狀況下會被阻斷。ConcurrentHashMap
是ConcurrentMap
的實做類別ConcurrentNavigableMap
是ConcurrentMap
子接口,其實做類別爲ConcurrentSkipListMap
,可視爲支持並行操做的TreeMap
版本。dump()
方法?
dump()
含義就是存儲。Runnable
於run()
中定義額外流程好?仍是繼承Thread
於run()
中定義額外流程好?
Runnable
接口的好處就是較有彈性,你的類別還有機會繼承其它類別Thread
中定義的一些方法,纔會繼承Thread來實做run()
方法才停止JVM。Thread
被標示爲Daemon
線程,在全部的非Daemon
線程都結束時,JVM自動就會終止。synchronized
前競爭對象鎖定的阻斷wait()
的阻斷cd ~/Java-20155212``在根目錄
git commit```而後push成功。原來,在當前目錄git只能git當前目錄的代碼。教材學習中的問題和解決過程, 一個問題加1分git
代碼調試中的問題和解決過程, 一個問題加1分安全
代碼中值得學習的或問題:多線程
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 18/18 | 1/1 | 10/10 | |
第二週 | 172/190 | 1/2 | 18/38 | |
第三週 | 464/654 | 1/3 | 23/61 | |
第四周 | 876/1530 | 1/4 | 28/89 | |
第五週 | 831/2361 | 1/5 | 15/114 | |
第六週 | 1404/2765 | 1/6 | 24/138 |
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。架構
參考:軟件工程軟件的估計爲何這麼難,軟件工程 估計方法學習
計劃學習時間:24小時.net
實際學習時間:24小時線程
改進狀況:比之前有了很大的進步,可是主要緣由仍是在於第11章特別多,逼得本身不得不投入時間。設計
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)