java序列化與反序列化的作用
序列化定義:把對象轉化為位元組序列的過程稱為對象的序列化。
反序列化定義:把位元組序列恢複成對象的過程稱為對象的反序列化。
序列化、反序列化實作方式:标記這個對象可以被持久化,即可以儲存在本地檔案.txt或者資料庫中(用流的方式)。
具體實作方式:1、對象實作Serilizable接口即可。預設方式控制序列化行為。
2、實作Externalizable接口(Externalizable接口繼承自Serilizable)。自身方式控制序列化行為。
參考網址:1、http://www.cnblogs.com/xiohao/p/4234184.html
2、http://www.cnblogs.com/xdp-gacl/p/3777987.html

關鍵字:transient,volatile
transient:辨別一個成員變量,應該在序列化中被忽略。
volatile:辨別一個成員變量為不穩定的。被讀取時,強迫從共享記憶體中讀取該變量的值;被寫時,強迫線程将變化值寫入共享記憶體。
進而保證,任何時候,兩個線程通路的同一變量,值是一緻的。
補充說明:java記憶體機制
Java使用一個主記憶體來儲存變量目前值,而每個線程則有其獨立的工作記憶體。
線程通路變量的時候會将變量的值拷貝到自己的工作記憶體中。
這樣,當線程對自己工作記憶體中的變量進行操作之後,就造成了工作記憶體中的變量拷貝的值與主記憶體中的變量值不同。
Java語言規範中指出:為了獲得最佳速度,允許線程儲存共享成員變量的私有拷貝。
而且隻當線程進入或者離開同步代碼塊時才與共享成員變量的原始值對比。
這樣當多個線程同時與某個對象互動時,就必須要注意到要讓線程及時的得到共享成員變量的變化。