程序员人生 网站导航

Java中volatile关键字的含义

栏目:php教程时间:2017-03-27 10:01:14


学习Java的同学注意了!!! 
学习进程中遇到甚么问题或想获得学习资源的话,欢迎加入Java学习交换群,群号码:183993990  我们1起学Java!


在java线程并发处理中,有1个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就能够万事大吉。

Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。


synchronized 

同步块大家都比较熟习,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同1时刻只能有1个线程能够用

synchronized 修饰的方法 或 代码块。


volatile

用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。volatile很容易被误用,用来进行原子性操作。


下面看1个例子,我们实现1个计数器,每次线程启动的时候,会调用计数器inc方法,对计数器进行加1


履行环境——jdk版本:jdk1.6.0_31 ,内存 :3G   cpu:x86 2.4G

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Counter {
 
    public static int count =0;
 
    public static void inc() {
 
        //这里延迟1毫秒,使得结果明显
        try {
            Thread.sleep(1);
        }catch (InterruptedException e) {
        }
 
        count++;
    }
 
    public static void main(String[] args) {
 
        //同时启动1000个线程,去进行i++计算,看看实际结果
 
        for (int i =0; i <
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐