此時語法為 Thread t1=new Thread(new TestSync()); 要給new Thread() 傳壹個實現Runnable 的對象。所以例子中加了test。t1.setName() 顧名思義,修改線程名字。線程要用t1.start()來開始線程。 每個實現了Ruannable 的類,必須有run() 方法。run()方法就是每個線程要做的事情。
說說Timer 類。 有壹個靜態int num。靜態變量對任何壹個Timer對象有著相同的可見性。有因為num是private, 所以只能被Timer裏的函數訪問。
add(String name) 方法中有try{}catch{}塊兒,因為Thread.sleep(); 為拋出InterruptedException() 異常,這是jdk源代碼所拋出的,必須這麽寫。或者可以public void add(String name) throws InterruptedException(){...} 來聲明異常。如果沒有異常被拋出,則運行System.out.println();語句。
上述源代碼八成不會有什麽問題,因為run() 方法裏沒什麽循環,就執行壹次。不過線程同步的時候,必須得考慮mutual exclusion, circular wait, No preemption, hold & wait 的問題。說白了就是死鎖(dead lock)和活鎖(live lock)問題。