java语言提供了一种稍弱的同步机制,即volatile变量。它的目的是 将变量的更新操作通知到其他线程。因此在读取volatile变量时总会返回最新写入的值。
但是访问volatile变量时并不会加锁,即线程不会阻塞,因此volatile变量是比sychronized的更为轻量的同步机制。
简单的来讲,volatile变量保证线程的可见性,可以有效防止指令的重排序带来的线程安全问题。但是无法保证写操作的线程安全。
java语言提供了一种稍弱的同步机制,即volatile变量。它的目的是 将变量的更新操作通知到其他线程。因此在读取volatile变量时总会返回最新写入的值。
但是访问volatile变量时并不会加锁,即线程不会阻塞,因此volatile变量是比sychronized的更为轻量的同步机制。
简单的来讲,volatile变量保证线程的可见性,可以有效防止指令的重排序带来的线程安全问题。但是无法保证写操作的线程安全。