synchronized原理, volatile原理
时间: 2023-10-28 16:39:02 浏览: 75
volatile和synchronized的区别
Synchronized是Java中的一个关键字,用于实现对资源的同步访问。在Java中,每个对象都有一个锁,当某个线程需要访问对象的同步代码块时,它必须先获得该对象的锁。当该线程执行完同步代码块后,会自动释放该对象的锁。这样,其他线程才能获得该对象的锁,从而访问对象的同步代码块。当一个线程持有一个对象的锁时,其他线程不能获得该对象的锁,也不能访问该对象的同步代码块。而synchronized关键字就是用来实现这个机制的。
Volatile也是Java中的一个关键字,用于实现多线程之间的变量可见性和禁止指令重排。在Java中,当一个变量被定义为volatile时,它会被存储在主内存中,而不是线程的工作内存中。这意味着对该变量的读操作和写操作都是直接从主内存中进行的,而不是从线程的工作内存中进行的。同时,volatile变量的写操作会立即刷新到主内存中,而不是等到线程执行完毕才刷新。这样,就可以实现多线程之间的变量可见性和禁止指令重排。
阅读全文