Java多线程--volatile_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java多线程--volatile

Java多线程--volatile

 2017/11/27 0:58:34  jxj0401  程序员俱乐部  我要评论(0)
  • 摘要:volatile不会提供加锁机制,只会保证修改对其他线程的可见性,当只有一个线程修改变量值,多个线程读取变量值时可以使用volatile,当多个线程修改变量值时,不能保证变量的安全,会发生丢失更新现象。importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.TimeUnit;publicclassTest
  • 标签:多线程 Java 线程

volatile不会提供加锁机制,只会保证修改对其他线程的可见性,当只有一个线程修改变量值,多个线程读取变量值时可以使用volatile,当多个线程修改变量值时,不能保证变量的安全,会发生丢失更新现象。

class="java">import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class Test {
	volatile static int m = 0;

	public static void main(String[] args) throws InterruptedException {
		ExecutorService exec = Executors.newCachedThreadPool();
		for (int j = 0; j < 10; j++) {
			exec.execute(new Runnable() {
				int count = 1000;

				@Override
				public void run() {
					while (count-- > 0) 
							m++;
				}

			});
		}
		exec.shutdown();
		while (Thread.activeCount() > 1) {
			Thread.yield();
		}
		System.out.println(m);
	}
}

?

发表评论
用户名: 匿名