Posted on 2008-09-08 02:06
leekiang 閱讀(186)
評論(0) 編輯 收藏 所屬分類:
java
1,java實現多線程有兩種方式,一種是調用一個繼承Thread的實例的start()方法,另外一種是實例化一個Thread,構造函數的參數是一個實現了Runnable接口的類的實例.一般都是使用后一種,因為只有后一種才方便讓多個線程操作同一個資源
2,多個線程用同一段代碼操作同一個資源時,可能會不同步,這時用synchronized.
? 對于代碼塊,格式為synchronized(對象){代碼} 在多線程里這個對象必須保證是同一個對象(每個對象都有表示是否上鎖的一個標志位)。注意:使用synchronized("test")與synchronized(new String("test"))
是有區別的,后者達不到同步的效果。
? 對于方法,在方法名前加一個synchronized,這里暗合synchronized(this)
5,不錯的入門例子:
http://developers.sun.com.cn/javapassion/handsonlabs/javase/javathreads_index.html
6,servlet就是一個守護線程
java回收線程也是
7,
CountDownLatch如其所寫,是一個倒計數的鎖存器,當計數減至0時觸發特定的事件。利用這種特性,可以讓主線程等待子線程的結束。
在一些應用場合中,某段程序需要等待某個條件達到要求后才能執行,或者等待一定長的時間后此行,從jdk1.5開始就可以使用CountDownLatch實現