1.首先要明白一个概念 JAVA中主内存和线程工作内存的概念. 如果有一个static的变量,值会存储在主内存.如果多个线程访问这个变量,每个线程都会将变量的值拷贝到自己的工作内存,之后的操作就是针对自己工作内存里副本的操作,最后再写回主内存 明显,上面的操作非原子操作,会出现经典的多线程问题: 变量 i=6,线程A和B都对i进行加1操作,期待i为8,但是: 线程A访问 i, 线程A进行 i++操作 线程B访问 i, 线程B进行 i++操作 线程A更新i,i为7 线程B更新i,i为7 2. vo