当前位置: 首页 > 编程笔记 >

Java中volatile和transient之间的区别

卫飞
2023-03-14
本文向大家介绍Java中volatile和transient之间的区别,包括了Java中volatile和transient之间的区别的使用技巧和注意事项,需要的朋友参考一下

volatile关键字用于多线程环境中,其中两个线程同时读取和写入同一变量。volatile关键字将更改直接刷新到主内存,而不是CPU缓存。 

另一方面,在序列化过程中使用了transient关键字。标记为瞬态的字段不能成为序列化和反序列化的一部分。我们不想保存任何变量的值,那么我们将瞬态关键字与该变量一起使用。 

序号 易挥发的 短暂的
1
基本的 
Volatile关键字用于将更改直接刷新到主内存
瞬态关键字用于在序列化期间排除变量 
2。
默认值 
挥发性不使用默认值初始化。
反序列化期间,将使用默认值初始化瞬态变量 
3
静态的 
易失性可以与静态变量一起使用。
暂时不能与static关键字一起使用
4
最后 
可以与final关键字一起使用
瞬态不能与final关键字一起使用

瞬态示例

// A sample class that uses transient keyword to
//跳过其序列化。
class TransientExample implements Serializable {
   transient int age;
   //序列化其他字段
   private String name;
   private String address;
   //其他代码
}

挥发物的例子

class VolatileExmaple extends Thread{
   boolean volatile isRunning = true;
   public void run() {
      long count=0;
      while (isRunning) {
         count++;
      }
      System.out.println("线程终止。" + count);
   }
   public static void main(String[] args) throws InterruptedException {
      VolatileExmaple t = new VolatileExmaple();
      t.start();
      Thread.sleep(2000);
      t.isRunning = false;
      t.join();
      System.out.println("isRunning set to " + t.isRunning);
   }
}
 类似资料:
  • 问题内容: 我想知道将变量声明为和始终在Java块中访问变量之间的区别吗? 问题答案: 重要的是要了解线程安全有两个方面。 execution control, and memory visibility 第一个与控制代码何时执行(包括执行指令的顺序)以及是否可以同时执行有关,第二个与其他线程可以看到存储器中已完成操作的效果有关。由于每个CPU与主内存之间都具有多个高速缓存级别,因此运行在不同CP

  • 问题内容: 我知道已经解决了这个问题,但是我在SO上看到了不一致的论点。 所以,如果我有: 我得到 FALSE 。 据我了解,这是因为和是对同一对象()的两个不同引用。 所以我会有类似的东西: 现在,如果我只想比较两个字符串的 内容 ,我将使用 这是否意味着如果两个引用指向同一个对象,JVM就会简单地返回?因此,它不是在逐个字符地进行比较吗? 谢谢 编辑 拿着电话。感谢您指出优先顺序!!! 当我将

  • 问题内容: 和java 和有什么不一样? 我想加载一个库,但是不想将路径添加到环境变量。这些方法中的任何一种都会有用吗? 问题答案: API文档中有区别。使您可以从默认路径加载-Java库路径。 另一个允许您从绝对路径加载它,必须将其指定为文件名。 如果您不想弄乱环境变量,则应使用

  • 问题内容: 如何不同? 他们似乎做同样的事情对我来说(也无二等等,他们如何不同? 另外,根据惯例,其中哪一种更可取,且使用频率更高? 问题答案: 好吧,确实确实说了完全像给了一样解释了。但是,返回一个对象,而返回一个图元。 如果你想享受的潜在缓存优势Integer.valueOf(int),则还可以使用以下方法: 现在,如果你想要的是对象,而不是原始的,然后使用可能比制作一个新的对象出更有吸引力,

  • 本文向大家介绍Java中HashMap和Hashtable之间的区别,包括了Java中HashMap和Hashtable之间的区别的使用技巧和注意事项,需要的朋友参考一下 Hashtable是原始java.util的一部分,是Dictionary的具体实现。但是,Java 2重新设计了Hashtable,使其也实现了Map接口。因此,哈希表现在已集成到集合框架中。它类似于HashMap,但已同步。

  • 本文向大家介绍Java中LinkedList和LinkedHashSet之间的区别,包括了Java中LinkedList和LinkedHashSet之间的区别的使用技巧和注意事项,需要的朋友参考一下 LinkedList和LinkedHashSet都是Java Collection框架最重要的类之一。 以下是LinkedList和LinkedHashSet之间的重要区别。 序号 键 链表 链接哈希