最近在修改組里的TMonitor程序頭疼壞了,程序的好多類在設(shè)計(jì)之初沒(méi)有考慮線程安全性,現(xiàn)在在源程序上加功能,怎一個(gè)痛苦了的。。。
楊哥(我剛到公司時(shí)接手他的程序)是個(gè)大牛,他在地圖的方面開(kāi)始設(shè)計(jì)的很好,但是都是靜態(tài)數(shù)據(jù),沒(méi)有數(shù)據(jù)的動(dòng)態(tài)變化的麻煩,然而后來(lái)在
JMapEdit上實(shí)現(xiàn)模擬動(dòng)態(tài)飛行以及動(dòng)態(tài)監(jiān)控上實(shí)現(xiàn)起來(lái)是個(gè)頭疼的問(wèn)題,可能會(huì)多個(gè)線程訪問(wèn)共享變量,而且有線程對(duì)共享變量的write操作,在程序中盡量調(diào)整原接口以及實(shí)現(xiàn)方式。楊哥走了,目前在組里只有我一個(gè)人了解地圖類編程,昨天跟方sir商量新來(lái)的同事是否也能接觸我的程序,方sir的回答:TMonitor還是比較難的,估計(jì)新來(lái)的同事(是個(gè)女的)不成,下次招個(gè)男的讓他接。。。不爽中,俺還是希望帶個(gè)女滴。。。
PS:經(jīng)驗(yàn)總結(jié)。
在沒(méi)有正確同步的情況下,如果多線程訪問(wèn)同一個(gè)變量,你的程序就存在隱患。有3種方法修復(fù)它:
- 不要多線程共享變量
- 使?fàn)顟B(tài)變量為不可變的;或者
- 在任何訪問(wèn)狀態(tài)變量的時(shí)候使用同步
設(shè)計(jì)線程安全的類時(shí),使用
封裝、不可變性以及明確的不便約束等面向?qū)ο蠹夹g(shù)可以使你在解決同步方面的問(wèn)題時(shí)思路清晰
posted on 2008-03-05 15:50
如果有一天de 閱讀(241)
評(píng)論(0) 編輯 收藏 所屬分類:
java線程