線程、輸入輸出流

1、IO流:File對象

       在java裏\代表轉譯符,所以文件之間的分割符用\\代替

       File   file=new   File("文件路徑")  String類型

       Long   length=file.Length()    返回文件多少字節

       File   file1=new   File("文件夾")   路徑

       String[]   fileNames=file1.list()    返回當前文件夾下文件名稱數組

       file.exists()    判斷文件是否存在

       file1.getAbsolutepath()   獲取文件絕對路徑

       file.isFile()   判斷是否是單個文件true

       file1.isFile()    判斷是否是單個文件false

       file.isDirectory()   是否是文件夾false

       file1.isDirectory()   是否是文件夾true

       File[]   files=file1.listFile()   獲取文件夾中的文件

       Long   xz=file.LastModified()獲取文件最後修改時間

       File   file2=new   File("\\新創建的文件.txt")

       boolean   flag=file2.crerteNewFile()   創建一個文件  

       File   file3=new    File("\\新建文件夾")

       boolean   flag=file3.mkdir()   創建文件夾

       boolean   flag=file3.mkdirs()    創建一個文件夾下面還有一個文件夾,就是同時創建兩個文件夾

       File   file4=new   File("url")   

       boolean   flag=file4.delete()    刪除

       file.renameTo("")    重命名

2、字節流:inputStream輸入流,outputStream輸出流

      例:File   file=new File("URL")

             File   file1=new File("URL")

             InputStream  is=new  FileInputStream(file)

             outputStream  os=new FileOutputstream(file1)

             if(is!=null&&os!=null){

                   int   len=-1  定義一個數組,將內存中讀取字節存在數組中

                   byte[]   myBytes=new   byte[1024]

                   while(len=is.read(myBytes)!=-1){

                          os.write(myBytes,0,len)   a從哪個數組中讀取,輸出流從哪寫出,b從第幾個元素開始讀取,c讀取多少個元素

                   }

                   is.close()

                   os.close()

             }

3、BufferedInputStream建立在字節輸入流基礎上,不用一個字節一個字節處理,提高了性能

      BufferedoutputStream建立在輸出流基礎上

4、字符流:不能對單字節構成的文件進行讀寫,不嫩處理視頻的圖片,以字節流爲基礎實現

     InputStream   in=new   FileInputStream(file)

     InputStreamreader    read=new    InputstreamReader(in)

     OutputStream   out=new   FileOutputStream(file)

     OutputStreamWriter   wr=new   OutputStreamWriter(out)

5、bufferedReader、BufferedWriter高級流

     br.readline   讀取每一行的字符

     br.colse()

     bw.flush()   緩存中

     bw.colse()   

6、線程:

      自定義一個類繼承自Thread類,重寫父類的run方法,創建自定義類的對象(實例),用該對象調用父類的start()方法啓動線程

       實現Runnable接口,並實現run方法,穿件線程對象(兩種方式),用對象調用start()方法

       線程同步:Sychronized(object){

                         }

                         修飾符   Sychronized   返回值    方法名/sale(){

                         }

                         在run()方法中調用sale()方法

        線程:在一個程序中同時運行多個獨立流程

                  主線程:main

                  在java中創建線程的方法有兩種:繼承java.lang.Thread類,實現java.lang.Runnable接口

                  例如:public  class  Mythread  extends  Thread{

                                     private  Test  test=new  Test();

                                     run(){重寫run方法

                                               Syso.....(Thread.currentThread().getName());

                                               test.dowork();

                                      }

                                      main()方法{

                                               MyThread  t1=new  MyThread();同時啓動3次線程

                                               MyThread  t2=new  MyThread();

                                               MyThread  t3=new  MyThread();

                                               t1.start();啓動線程

                                               t2.start();

                                               t3.start();

                                      }

                             }

                     例如:public  class  Mythread  implements  Runnable{

                                         run(){重寫run方法

                                                  Syso......(Thread.currentThread().getName());

                                                  for(int  i=1;i<=5;i++){

                                                           Syso.....("===="+i);

                                                            Thread.sleep(10000);睡10秒

                                                  }

                                         }

                                         main(){

                                                   MyThread   t1=new   MyThread();第一種創建線程的方式

                                                   MyThread   t2=new   MyThread();第二種創建線程的方式

                                                   Thread   tr=new   Thread(tr2);

                                                   Thread   trd=new   Thread(new  MyThread());

                                                   Thread   trd1=new   Thread(new  MyThread());

                                                   Thread   trd2=new   Thread(new  MyThread());

                                                   trd.start();

                                                   trd1.start();

                                                   trd2.start();

                                         }

                                }

7、控制線程的主要方法:Thread

       start()    啓動線程

       suspend()    掛起線程

       resame()    繼續掛起線程

       join()    等待線程執行完畢,當前線程執行完畢之後再執行

       yield()   暫緩線程

       sleep()    線程等待

       wait()   線程等待    屬於object類,必須在同步塊中調用

       notify()    喚醒線程    屬於object類,必須在同步塊中調用

8、線程安全、線程不安全:

線程同步:就是當一個程序對一個線程安全的方法或者語句進行訪問的時候,其他的不能再對他進行操作了,必須等到這次訪問結束y以後才能對這個線程安全的方法進行訪問

線程安全:如果你的代碼所在進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼,如果每次運行和單線程運行結果一樣,而且其他的變量的值也和預期的是一樣的就是線程安全的,若每個線程中對全局變量靜態變量只有讀操作,而無寫操作,一般來說就是線程安全的,若有多個線程同時執行寫操作,一般都需要考慮線程同步,否則就可能影響線程安全

9、多線程:

多線程:新建、就緒、運行、阻塞、死亡狀態

資源利用率更高,程序設計更簡單,程序響應更快,提高CPU的利用率,用戶體驗好,使用線程可以把佔據時間長的程序中的人物放到後臺去處理用戶界面更吸引人,這樣比如用戶點擊了一個程序按鈕去觸發某個事件,可以彈出一個進度條來顯示處理的進度

大量的線程會影響性能,因爲操作系統需要在它們之間切換,更多的線程需要更多的內存空間,線程終止需要考慮對程序運行的影響

10、多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?

多線程有兩種實現方法:
  方法一:繼承Thread類,重寫方法run();
  方法二:實現Runnable接口,實現方法run();
共同點:
不論用哪種方法,都必須用Thread(如果是Thead子類就用它本身)產生線程,然後再調用start()方法。

區別:
繼承Thread類有一個缺點就是單繼承,而實現Runnable接口則彌補了它的缺點,可以實現多繼承
繼承Thread類必須如果產生Runnable實例對象,就必須產生多個Runnable實例對象,然後再用Thread產生多個線程;而實現Runnable接口,只需要建立一個實現這個類的實例,然後用這一個實例對象產生多個線程。即實現了資源的共享性

https://www.cnblogs.com/liujichang/p/3150387.html 介紹使用方法

實現同步有幾種方法:例如:synchronized,wait,notify都可以實現同步。

11、線程生命週期圖(新建、就緒、運行、阻塞、消亡)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章