1. 程式人生 > >java上課提問記錄

java上課提問記錄

這一 不可 一加 不用 沒有 流程 sched 擁有 實現

1、單例設計模式,適配器設計模式
單利設計模式: 
    在java中,單例模式是指為了保證類在內存中只有一個對象,而形成的一種固有的代碼模式!
適配器設計模式:
    在java中,適配器設計模式是指為了監視某些行為,但是對於每種監聽到的行為又有不同的處理,為了能夠讓監聽者自行來處理監聽到指定行為後,要做的後續操作,而形成的一種固有的代碼模式!

適配器標準課上答案:

    * a.什麽是適配器
        * 在使用監聽器的時候, 需要定義一個類事件監聽器接口.
        * 通常接口中有多個方法, 而程序中不一定所有的都用到, 但又必須重寫, 這很繁瑣.
        * 適配器簡化了這些操作, 我們定義監聽器時只要繼承適配器, 然後重寫需要的方法即可.
    * b.適配器原理
        * 適配器就是一個類, 實現了監聽器接口, 所有抽象方法都重寫了, 但是方法全是空的.
        * 適配器類需要定義成抽象的,因為創建該類對象,調用空方法是沒有意義的
        * 目的就是為了簡化程序員的操作, 定義監聽器時繼承適配器, 只重寫需要的方法就可以了.

2、餓漢式和懶漢式的區別

使用場合:
    餓漢式:    開發用
    懶漢式:    面使用,開發一般不用
思想:
    餓漢式:    類一加載就生成對象。
    懶漢式:    在調用獲取對象的方法的時候生成。
實用性:
    餓漢式:    安全,效率高。相對懶漢式會在未使用之前就占用內存。
    懶漢式:    存在線程安全漏洞,可以利用同步解決,但是效率會變低。內存方面符合了編程中的延遲加載思想。(在面試中面試官會比較希望答出這一點)

3、Timer類是幹嘛的

Timer類是計時器。
一般的使用過程是在Timer類的schedule()方法中傳入兩個參數,一個TimerTask的子類對象,在這個子類對象中規定了計時結束的操作,另一個java.util.Date類的對象,其參數指定了計時的開始時間和循環周期,

4、wait和sleep的區別

sleep方法:定義在Thread類中,讓線程在指定時間內處於休眠狀態,超時後繼續向下執行,休眠的線程不會釋放鎖資源。
wait方法 :定義在Object類中,讓以當前對象為監視器的線程處於阻塞狀態,不可獲取執行權,在得到notify或者notifyAll的通知後再繼續搶奪執行權。等待的線程會釋放鎖資源。

5、線程的生命周期(五中狀態的切換流程)

線程分為5個生命周期,新建,就緒,運行,阻塞,死亡
其中:
    新建代表線程在內存中創建,對應start方法。
    就緒代表線程擁有搶奪執行權的資格,如果搶到就會執行線程中的內容
    運行代碼線程中的內容正在執行。
        a:若被搶走執行權,回到就緒狀態
        b:若執行ssleep、wait等方法,會進入阻塞狀態。
    阻塞代表線程被強制不可進入就緒狀態,對於非就緒狀態的線程是沒有機會搶奪執行權,也就更不可能進入運行狀態了。
    死亡代表線程運行結束,也可能是被強制結束,一般不建議使用。

java上課提問記錄