国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

Java。多線程環(huán)境中對象的序列化

瀏覽:110日期:2024-04-29 13:38:14
如何解決Java。多線程環(huán)境中對象的序列化?在這種情況下,序列化安全嗎?

否。正如@Tom Hawtin所說,您將需要執(zhí)行自己的鎖定,以確保在序列化對象時不會更改對象。@H_502_7@它是如何工作的?也就是說,ObjectOutputStream是否將執(zhí)行序列化塊,直到不再有任何線程在Counter上運行了?

ObjectOutputStream@H_403_16@不會在引擎蓋下鎖定。如有必要,由應用程序決定。@H_502_7@如果Counter的同步不使用固有鎖,而是使用其他鎖怎么辦?

然后,在序列化發(fā)生時,您的應用程序還需要使用其他鎖定來鎖定更新。@H_502_7@

如果您要序列化的狀態(tài)僅由一個對象的狀態(tài)和兩個字段組成,則鎖爭用和粒度應該不成問題。但是,如果對象很復雜,那么鎖爭用就很成問題了,獲取鎖而又沒有死鎖風險的問題也很成問題。這種情況需要仔細設計。@H_502_7@解決方法

我有一個對象,其內(nèi)部可變狀態(tài)正在由一個或多個線程不斷更新。對象已同步,目標是從另一個線程定期保存其狀態(tài)(通過序列化):

public class Counter implements Serializable { private int dogCount; private int catCount; public synchronized void updateFromDogThread( int count ) { dogCount = count; } public synchronized void updateFromCatThread( int count ) { catCount = count; }}

問題:

在這種情況下,序列化安全嗎?它是如何工作的?也就是說,ObjectOutputStream執(zhí)行序列化是否會阻塞直到不再有線程運行Counter?如果Counter同步不使用固有鎖,而是使用其他鎖怎么辦?
標簽: java
相關(guān)文章:
主站蜘蛛池模板: 本溪市| 宝鸡市| 宁晋县| 屏山县| 佛冈县| 福清市| 会同县| 宝兴县| 曲阜市| 鱼台县| 浙江省| 柞水县| 霞浦县| 宜君县| 桦南县| 资阳市| 高要市| 教育| 淮安市| 渝中区| 铁力市| 武平县| 邻水| 桦甸市| 东辽县| 海口市| 南昌市| 西乌珠穆沁旗| 滨海县| 甘德县| 甘泉县| 美姑县| 洪泽县| 丹棱县| 七台河市| 新郑市| 桂平市| 波密县| 喀喇沁旗| 平和县| 遂溪县|