什么情況下我們要考慮線程安全?
多方總結應該是一句話:當兩個線程同時訪問一個對象的時候,就需要考慮該對象是否是線程安全!(呵呵,參考了一位同事的話)...覺得比較精辟的清晰的.比如我們覺見的servlet,操作數據庫等等...
提高效率需要注意一點的就是分解:
舉個例子大家容易更加明白什么叫分解,分解了為什么能提高效率:
public synchonized void work(){
print();
readMail();
openMeet();
}
該方法里面調用的print()和openMeet()兩個方法如果是同步方法,且readMail()需要消耗很多時間時,我們不妨把上面的方法改成如下這樣,將會大大提高效率:
public synchonized void work(){
synchonized(this) {
print();
}
readMail();
synchonized(this) {
openMeet();
}
}
這樣,我們在調用成功一個同步方法后就會解鎖給其它線程調用,繼續調用費時很長的方法,這樣將大大提高性能效率問題了..
這算是看了一點資料的一點總結吧....希望能對新手有所幫助!高手就不用了,嘿嘿..
多方總結應該是一句話:當兩個線程同時訪問一個對象的時候,就需要考慮該對象是否是線程安全!(呵呵,參考了一位同事的話)...覺得比較精辟的清晰的.比如我們覺見的servlet,操作數據庫等等...
提高效率需要注意一點的就是分解:
舉個例子大家容易更加明白什么叫分解,分解了為什么能提高效率:
public synchonized void work(){
print();
readMail();
openMeet();
}
該方法里面調用的print()和openMeet()兩個方法如果是同步方法,且readMail()需要消耗很多時間時,我們不妨把上面的方法改成如下這樣,將會大大提高效率:
public synchonized void work(){
synchonized(this) {
print();
}
readMail();
synchonized(this) {
openMeet();
}
}
這樣,我們在調用成功一個同步方法后就會解鎖給其它線程調用,繼續調用費時很長的方法,這樣將大大提高性能效率問題了..
這算是看了一點資料的一點總結吧....希望能對新手有所幫助!高手就不用了,嘿嘿..