IT十八掌掌第九天課程總結

今天學完IT十八掌第九天java基礎課程:


學習內容:

創建線程方式

-----------------

    1.Thread

            class Demo extends Thread

            {

                    public void run()

                        {

                        }

            }

    2.Runnable{public void run();}

    class Man extends Person implements Runnable{

        public void run(){

            ...

        }

    }

    new Car().start();

    new Thread(new Man()).start();

  

實現方式和繼承方式的區別:

    1,實現方式避免了java中單繼承的侷限性。

    2,實現方式將代碼和數據分離,體現了面向對象的設計思想

    3,實現方式可以保證多個線程操作同一數據,提高代碼的健壯性。

生產消費問題:

    蜜蜂和熊:

            蜜蜂和熊爲兩個線程類,操作共享資源類蜂蜜類。

            關鍵在於操作蜂蜜時,代碼應該同步,避免出現多線程的安全問題。

            其次,在生產和消費時,應該分離,分別使用wait和notify來控制。

            wait()和notify必須用鎖旗標對象來調用,也就是說必須在同步中使用,這個鎖可以是Object類的任何子類對象,具備的是標記功能。

            wait()方法使得當前線程對象進入等待隊列,放棄cpu執行權,並且釋放鎖,具備cpu執行權的線程可以拿到鎖。會拋異常

            notify()方法喚醒等待隊列中的一個線程,具備cpu執行權的爭奪。

            notifyAll()方法喚醒等待隊列中的所有線程,爭奪cpu執行權。

            

   wait()和sleep()方法區別與聯繫:

        1,wait()方法必須在同步中使用,通過鎖旗標調用,sleep()可以在線程的任何位置,通過線程對象調用。

                wait()方法是Object當中的,而sleep()方法是Thread類當中的。

        2,wait( )方法和sleep()方法都會使得當前線程休眠,但是wait()方法會釋放鎖,而sleep()方法不會釋放鎖。會等待當前線程休眠完畢繼續執行。

        

        3,調用wait()方法會使當前線程進入等待隊列,知道鎖對象調用notify()或者notifyAll()纔會被喚醒。

eclipse

---------------

    alt + /                    //代碼輔助

    alt + 上箭頭            //向上移動一行

    alt + 下箭頭            //向上移動一行

    alt + shift + 上箭頭    //向上複製一行

    alt + shift + 下箭頭    //向下複製一行

    ctrl + D                    //刪除一行

    ctrl + /                    //單行註釋

    ctrl + shift + /            //多行註釋

    ctrl + shift +f            //格式化代碼

    alt  + shift +s            //調出source菜單項

    ctrl +O                    //調出對應的詳細信息

String

-----------------

    1. ==                            //判斷是否是同一對象。判斷對象的內存地址。

    2. equals                        //是判斷兩個對象內容是否相同。

        String類中重寫了Object類中的equals方法,用於比較字符串的內容是否相同。

    split(String reg);                //按照指定的字符串進行拆分,返回值數組。

        str.split(",")    按逗號切割字符串,返回對應類型的數組。

        例如:    String str = "saf,fdsa,fsald";

                        String [] ss = str.split(",");    

    substring(int start);            //取子串操作,指定起始索引之後的所有字符

            

    substring(int start,int end);    //取子串操作,指定起始索引和結束索引之間的全部字符,

                                    //包含起始索引,不含結尾索引。[a,b)屬於半開半閉區間。

基本數據類型對象包裝類

---------------------------------------------

byte        Byte                    //包裝類

short        Short

int            Integer

long        Long

float        Float

doule        Double

boolean        Boolean

char        Character

byte b = 127 ;

Byte b = new Byte(127);




遇到的問題:

            1,多線程生產消費問題

            2,eclipse使用,debug使用

            3,String類的方法

需要幫助的問題:


            1,eclipse調試代碼,工具使用

            2,多線程總結

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