可以在java

时间:2017-09-19 15:28:24

标签: java

瞬态和静态变量无法序列化

根据Joshua Bloch的优秀书籍“Effective Java Programming Language Guide”,“volatile修饰符保证读取字段的任何线程都能看到最近写入的值”

但是如果要将volatile序列化或不序列化。

2 个答案:

答案 0 :(得分:5)

volatile通常由Java Object Serialization序列化。 volatile的线程/ JMM属性与序列化正交。

顺便提一下,如果您编写自定义transient / static方法来执行此操作,则序列化writeObjectreadObject变量可能 。但是,这不是由默认的序列化程序完成的。

  • 您不希望序列化transient变量。毕竟transient本质上是一个提示,不包括序列化中的字段。

  • static变量未包含在对象序列化中(默认情况下)的原因是静态不属于特定对象。

答案 1 :(得分:3)

是的,可以序列化。字段修饰符volatile用于Java内存模型,以确保所有线程都看到一致的值。它不会限制其持久性。