當給main加上synchronized

2021-04-12 17:09:14 字數 647 閱讀 2026

1。

在乙個同步化的靜態方法執行之前,它會獲取與它的class 物件相關聯的乙個管程(monitor)鎖[jls 8.4.3.6]。

所以在上面的程式中,主線程會在建立第二個執行緒之前獲得與pingpong.class 相關聯的那個鎖。只要主線程

占有著這個鎖,第二個執行緒就不可能執行同步化的靜態方法。具體地講,在main 方法列印了ping 並且執行

結束之後,第二個執行緒才能執行pong 方法。只有當主線程放棄那個鎖的時候,第二個執行緒才被允許獲得這

個鎖並且列印pong 。

package com.yinbodotcc;

public class pingpong

};// t.setdemo(true);

t.start();

system.out.println( "ping" );

}static synchronized void pong()

} 2。如果上面是用t.run()代替t.start()則不是乙個多執行緒了,只是普通方法呼叫。這個時候列印pong ping

3.上面程式中,我在t.start()上面加入t.setdemo(true),同時pong方法裡面用while迴圈(見紅色部分),則

會列印出若干個pong(不會乙個也不列印,也不是一直列印下去)

給數字加上註解

注釋 命名清晰 簡單,單獨的變數使用,例如 變數定義 int a 1 判斷 if a 1 這些情況下通常會利用巨集定義來代替這些幻數 魔數,例如 定義 define max 1 使用 a max if a max 陣列使用,例如 gui程式設計需要定義5個按鍵,class,pop,定義 button...

給postmessage加上callback方法

postmessage雙向通訊中,是不能使用 函式的。window.postmessage 這樣是不行的,js會提示function不會被轉殖。我猜啊因為postmessage是通過dom通訊,js物件會被json化 也就是說不能傳遞方法。不過,話說回來,有什麼不能的呢,大不了,把function ...

給flash加上了版權

抽空看了下contextmenu類和contextmenuitem類,偶然又看見f8幫助裡居然有單例模式的介紹,仿照寫了乙個,就當練習 圖是偶隨便畫的 點這裡 顯示 隱藏 不會用類的看這裡 fla中標準應該這麼寫 cr.show private var cm contextmenu cm new c...