[問題] 請問我對synchronized的觀念正確嗎?
請大家幫我看看我的觀念對嗎?
synchronized的用法可分為2類
第一類:
synchronized void method(){}
void method(){
synchronized(this)
}
以上這兩個方法相同,就稱第一類好了
第一類的方法,只能鎖住相同類別,相同的instance
比如說有一個Student類別
Student sd1 = new Student();
Student sd2 = new Student();
new Thread(sd1).start();
new Thread(sd2).start();
sd1與sd2雖然同類別,但為不同的instance,
所以用第一類這種方法是不安全的
第二類:
static synchronized void method(){}
void method(){
synchronized(Student.class);
}
以上這兩個方法相同,就稱第二類好了
第二類的方法,可以鎖住相同類別 且 相同或不同的instance
所以剛剛那個例子,用此方法的話就是安全的。
請問大家,我的觀念對嗎?
感覺第一類的方法似乎比較常看到,
但我拿來用時,就發生不安全的情形,
後來改成第二類的方法才解決。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.65.141
→
02/02 00:09, , 1F
02/02 00:09, 1F
→
02/02 00:12, , 2F
02/02 00:12, 2F
→
02/02 00:13, , 3F
02/02 00:13, 3F
→
02/02 00:13, , 4F
02/02 00:13, 4F
→
02/02 00:15, , 5F
02/02 00:15, 5F
→
02/02 00:17, , 6F
02/02 00:17, 6F
→
02/02 00:33, , 7F
02/02 00:33, 7F
※ 編輯: sshjj 來自: 114.42.65.141 (02/02 00:38)
→
02/02 01:06, , 8F
02/02 01:06, 8F
→
02/02 01:08, , 9F
02/02 01:08, 9F