Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了同步块 和 volatile 关键字机制。
用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。但是volatile并不能进行原子性操作。
举个例子:
package com.blog.fenye;
public class Counts {
public static int count = 0;
public static Object object = new Object();
public static void inc(){
try{
Thread.sleep(1);
}catch(InterruptedException e){
}
count++;
}
public static void main(String[] args){
for(int i=0;i<1000;i++){
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
Counts.inc();
// System.out.println("运行结果:Counter.count=" + Counts.count);
}
}).start();