標籤:定時 問題 對象 動作 介面 main this string 行資料
IO:進行資料的讀寫操作。輸入資料流:源頭----》應用程式,read輸出資料流:應用程式(源頭)---》目的地,write 位元組流:InputStream,OutputStream字元流:Reader,Writer read:1.建立輸入資料流對象,與要讀取檔案相關聯2.讀取檔案內容3.關閉流write:1.建立輸出資料流對象,與要寫入資料的檔案相關聯2.將資料寫入到檔案3.關閉流 字元封裝流對象:BufferdReader:String readLine(),nullBufferdWriter:newLine() 位元組封裝流對象:ObjectInputStreamObjectOutputSream :可以進行基本類型資料和對象資料讀寫操作 File對象:用來封裝檔案或者目錄的資訊,比如路徑名,檔案名稱等資訊。如果想要對檔案進行讀寫操作只能使用IO,File本身不能進行讀寫操作,只是封裝資訊。 序列化:將對象按照位元組進行儲存 ----寫還原序列化:將儲存的對象重新還原 ----讀標準類庫中大多數對象都可以進行序列化,比如:包裹類,String,數組,集合等。 序列化的規則:1.序列化只將欄位值進行序列化,構造器和方法不進行序列化2.如果序列化對象中使用了另一個對象,那麼該對象也進行序列化3.如果對象與系統操作有關,那麼該對象不能進行序列化4.靜態成員變數不參與序列化。 自訂對象序列化,必須實現Serializable介面如果某一個欄位不想要序列化,用transient修飾即可。 控制台裝置:標準輸入裝置:鍵盤 System.in ==== InputStream標準輸出裝置:終端視窗 System.out ==== PrintStream標準錯誤裝置:終端視窗 System.err ==== PrintStream 轉換流對象:InputStreamReader:將位元組輸入資料流轉成字元輸入資料流OutputStreamWriter:將位元組輸出資料流轉成字元輸出資料流 InputStreamReader(InputStream in)OutputStreamWriter(OutputSream ou)Scanner:java.util包中,是掃描器,能掃描簡單的檔案資料(基本類型或者是String)是按照欄位形式進行掃描,遇到分隔字元返回資料(空格,定位字元,斷行符號分行符號)被掃描的對象:File對象,位元組流,字元流,String printf("格式化碼",參數1,參數2,....);格式化碼的標準文法:%[-][0][長度].[精度]<格式化碼>eg:%,8d:此時“,”代表的是千位分隔字元 %s,%b,%d,%o,%x(%X),%c,%n,%%注意:如果指定的長度小於實際長度,按照實際長度輸出預設靠右對齊,空格補位線程: cpu執行的是一個應用程式中的某個線程,執行多個線程的時候,cpu在做著高速切換的動作一個進程有多個線程 一個進程中只有一個線程 叫單線程。jvm 是進程 main 方法是主線程 main裡面多個獨立程式碼片段 即多個子線程。cpu切換線程是根據線程的優先順序(1-5-10)cpu在哪個線程執行的次數不確定。建立線程:1.定義類實現 runnable介面 並覆蓋run方法 run方法中封裝子線程的代碼2.第一步的對象作為參數 傳遞給 java.lang.thread3.調用thread的start()方法 啟動線程自訂建立線程:0自訂類 繼承 thread 類擷取線程名稱:thread。currentthread()靜態方法 擷取當前線程所有對象 對象。getname()擷取名稱。線程生命週期:建立(new thread)---可運行(start)--堵塞 (sleep)--正在運行(run)(對象的鎖池)-wait()和notify()阻塞對象的等待池--終止(run結束)多線程中 可運行與正在運行迴圈 停掉線程:通知方式停掉線程子線程建立一個執行個體變數或者封裝變數true或false 提供set 方法 main方法中對象調用 方法喚醒:主動喚醒: 等thread。sleep(1000) 指定時間 靜態方法sleep被動喚醒:調用interrupt()執行個體方法 多線程共用資料安全問題:多個線程執行操作的是同一個run方法時可能會出現髒資料 一個線程執行run方法沒有執行完 另一個線程參與執行髒資料解決:同步語句塊{} synchronized(this)同步鎖其他對象進不來當synchronized 語句結束後 幾下幾種情況 鎖標記被釋放回對象1.線程正常執行至語句塊的末端2.語句塊中拋出了異常3.語句塊中遇到了break 語句 或者return語句。前提 多線程 同一個對象stick{} 靜態語句塊語句塊 類載入語句塊 main方法之前執行 jvm編譯隨著類載入而執行{int age = 20} 語句塊放在方法內 只執行一次就消失。多線程基於資源的互動:線程對象1 wait()等待 讓出線程使用權線程對象2 notify()立即喚醒線程1wait和notify方法必須同步被同一把鎖池對象調用。notifyall 喚醒所有的線程
java隨手筆記之九之IO和線程