Java并发基础(四)-volatile和synchronized

来源:互联网 发布:淘宝食品备案 编辑:程序博客网 时间:2024/05/30 02:26

0. 内存可见性

Java中,所有的变量都是存在主存中,这对所有的线程都是共享的,而且每个线程都有自己的工作内存。当线程与其他线程共享一个变量时,便会把主内存的变量复制到线程内存中去。当发生对变量的修改时,会同步到主内存,主内存再同步到其他线程内存中去。

可见性,指的是线程之间的可见性,一个线程的修改状态对另一个线程也是可见的。

1. volatile

volatile 修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

volatile是一种稍弱的同步机制,在访问volatile变量时不会执行枷锁操作,也就不会执行线程阻塞,是一种比synchronized更轻量的同步机制。

2. synchronized

synchronized修饰的语法块或者对象,同一时刻,只能被一个线程访问。常常被使用在单例中。

3. 总结

这两个关键字,大家够狠熟悉,我也只是了解点简单的用法。更深层次的还没学到。

0 0
原创粉丝点击