做网站找 汇搜网络安阳电话区号
news/
2025/10/1 7:26:41/
文章来源:
做网站找 汇搜网络,安阳电话区号,搜索引擎优化策略不包括,wordpress高级设置在java线程并发处理中#xff0c;有一个关键字volatile的使用目前存在很大的混淆#xff0c;以为使用这个关键字#xff0c;在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的#xff0c;为了解决线程并发的问题#xff0c;在语言内部引入了 同步块 和 v…在java线程并发处理中有一个关键字volatile的使用目前存在很大的混淆以为使用这个关键字在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的为了解决线程并发的问题在语言内部引入了 同步块 和 volatile 关键字机制。synchronized同步块大家都比较熟悉通过 synchronized 关键字来实现所有加上synchronized 和 块语句在多线程访问的时候同一时刻只能有一个线程能够用synchronized 修饰的方法 或者 代码块。volatile用volatile修饰的变量线程在每次使用变量的时候都会读取变量修改后的最的值。volatile很容易被误用用来进行原子性操作。下面看一个例子我们实现一个计数器每次线程启动的时候会调用计数器inc方法对计数器进行加一执行环境——jdk版本jdk1.6.0_31 内存 3G cpux86 2.4Gpublic 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 1000; i) {new Thread(new Runnable() {Overridepublic void run() {Counter.inc();}}).start();}//这里每次运行的值都有可能不同,可能为1000System.out.println(运行结果:Counter.count Counter.count);}}运行结果:Counter.count995实际运算结果每次可能都不一样本机的结果为运行结果:Counter.count995可以看出在多线程的环境下Counter.count并没有期望结果是1000很多人以为这个是多线程并发问题只需要在变量count之前加上volatile就可以避免这个问题那我们在修改代码看看看看结果是不是符合我们的期望public class Counter {public volatile 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 1000; i) {new Thread(new Runnable() {Overridepublic void run() {Counter.inc();}}).start();}//这里每次运行的值都有可能不同,可能为1000System.out.println(运行结果:Counter.count Counter.count);}}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923591.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!