天天看點

Java基礎學習第六天

Java基礎學習第六天

  1. 程序
    1、自定義線程繼承Thread類
    2、重寫run()方法,編寫線程執行體
    3、建立線程對象,調用start()方法啟動線程
    注意:線程開啟不一定立即執行,由cpu排程執行,
    
    定義MyRunnable類實作Runnable接口,
    實作run()方法,編寫線程執行體
    建立線程對象,調用start()方法啟動線程
    
    小結:
    	繼承Thread類:
    		1.子類繼承Thread類具有多線程能力
    		2.啟動線程:子類對象.start()
    		3.不建議使用,避免OOP單繼承局限性
    
    	實作Runnable接口
    		1.實作Runnable接口具有多線程能力
    		2.啟動線程:傳入線程對象+目标對象.start()
    		3.推薦使用,避免單繼承局限性,靈活友善,友善同一個對象被多個線程使用
    
    	實作Callable接口(了解即可)
    		1.實作Callable接口,需要傳回值類型
    		2.重寫call方法,需要抛出異常
    		3.建立目标對象
    		4.建立執行服務:ExecutorService ser = Executors.newFixedThreadPool(1);
    		5.送出執行:Future<Boolean>result1=ser.submit(t1)
    		6.擷取結果:boolean r1=result1.get();
    		7.關閉服務:ser.shutDownNow();
               
  2. 線程并發
    多個線程操作同一個資源的情況下,線程不安全,資料易發生紊亂;
    
    靜态代理模式總結:
    	1、真實對象和代理對象都要實作同一個接口
    	2、代理對象要代理真是角色
    好處:
    	1、代理對象可以做很多真實對象做不了的事情
    	2、真實對象專注做自己的事情
               
  3. Lamda表達式
    為什麼要使用Lamda表達式:避免匿名内部類定義過多,去掉沒有意義的代碼隻留下核心的邏輯
    函數式接口:任何接口,如果隻包含唯一一個抽象方法,那麼它就是一個函數式接口;對于函數式接口,我們可以通過Lamda表達式來建立該接口的對象
    
    推導Lamda接口表達式:
    	1、定義一個函數式接口
    簡化:
    	1、參數類型
    	2、簡化括号
    	2、去掉花括号
    總結:lambda表達式隻有一行代碼的情況下才能簡化成為一行,如果有多行,那就用代碼塊包裹前提是接口是函數式接口
    多個參數也可以去掉參數類型,要去掉就都去掉,必須加上括号