天天看點

實訓第二天實訓第二天0716

實訓第二天0716

上午時間

  1. 昨天遺留問題,開啟多線程的第三種方式:線程池

    ExecutorService service = Executors.newCachedThreadPool(); //線程池,使用靜态方法建立

    service.execute(()->{

    //開啟一個線程

    });

    service.shutdown();//關閉一個線程

  2. //信号量

    // Semaphore semaphore =new Semaphore(2); //建立一個信号量,資源數為兩個

    // semaphore.acquire(1);//占用一個資源

    // semaphore.release(1);//釋放一個資源

  3. //閉鎖

    // CountDownLatch countDownLatch = new CountDownLatch(5000);//建立5000把鎖。

    // countDownLatch.countDown();//解一把鎖

    // countDownLatch.await();//線程阻塞,必須等所有的鎖都解完了,才會執行此句之後的代碼。

  4. //鎖,首先要一個鎖旗标,一般建個Object對象(無意義),被鎖住的代碼一次隻有一個線程執行

    //synchronized 如果放到方法中,就說明在方法開始到結束都加鎖,一次隻有一個線程執行,鎖旗标就是this對象。一般線程安全的資料結構,其内部方法全部加了synchronized

    // Object lock = new Object();

    // synchronized (lock){

    // //執行代碼

    // }

  5. 抽象類和接口的差別:

    * 1. 單繼承 多實作

    * 2. 抽象類 可以有構造方法,接口沒有構造方法,但是兩者都不能被執行個體化

    * 3. 抽象類中可以有成員變量和屬性,接口中隻能有靜态常量,使用final 和static 修飾,即使不寫修飾符,也是預設靜态隻讀

    * 4. 抽象類可以有抽象方法和非抽象方法,接口可以使用default來定義非抽象方法。

  6. 多态

    * 同一個類型可以具備多種形态

    *

    *

    * 表現形式

    * 指派多态 ----- 父類引用指向子類對象

    * 傳值多态 ----- 一單參數類型定義為父類,那麼所有子類對象都可以傳遞

下午時間

  1. 工廠模式
  2. IO流

    分為位元組流和字元流

    位元組流是InputStream和OutputStream,字元流是Reader和Writer

    File file = new File(“F:/test.txt”);

    // file.createNewFile(); //建立新檔案

    System.out.println(file.exists()); //傳回是否存在

    // 位元組流輸出

    // InputStream inputStream = new FileInputStream(file);

    // byte[] content = new byte[1024];

    // int count = inputStream.read(content);

    // for(int i=0;i<count;i++){

    // System.out.print((char)content[i]);

    // }

    //位元組流寫入

    // OutputStream outputStream = new FileOutputStream(file);

    // outputStream.write(“skjsfkj”.getBytes());

    // outputStream.flush();

    // outputStream.close();

    //字元流寫入

    // Writer writer = new FileWriter(file);

    // writer.write(“你是誰啊”);

    // writer.append(“cssss”);

    // writer.flush();

    // writer.close();

// 字元流的讀取

// Reader reader = new FileReader(file);

// char[] content = new char[1024];

// int count = reader.read(content);

// for(int i=0 ; i<count ; i++){

// System.out.print(content[i]+" ");

// }

// reader.close();