前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中什么叫原子操作?再给出个例子?

java中什么叫原子操作?再给出个例子?

作者头像
马克java社区
修改2021-04-26 14:38:38
4730
修改2021-04-26 14:38:38
举报
文章被收录于专栏:java大数据java大数据

什么叫原子操作?

就 是无法被别的线程打断的操作。要么不执行,要么就执行成功。例如:x=3是原子操作。过程就是先把工作内存的x赋成3,再把主存的x赋成3。y=x不是原 子操作,它涉及在工作内存先把x值读出来,再把这个值赋给y。x++或x=x+1也不是原子操作,它涉及取值,自加和赋值。下面我们就用一个例子来说明x ++不是原子操作所带来的问题。

class NumContainer {

int num;

}

class MulThreMarkToWin extends Thread {

NumContainer nc;

public void increase() {

nc.num++;

}

public MulThreMarkToWin(NumContainer nc) {

this.nc = nc;

}

public void run() {

increase();

}

}

public class TestMark_to_win {

public static void main(String[] args) {

NumContainer nc = new NumContainer();

MulThreMarkToWin[] threads = new MulThreMarkToWin[10000];

for (int i = 0; i < 10000; i++) {

threads[i] = new MulThreMarkToWin(nc);

}

for (int i = 0; i < 10000; i++) {

threads[i].start();

}

try {

Thread.sleep(6000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(nc.num);

}

}

更多请看下节:https://blog.csdn.net/qq_43650923/article/details/101073502

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档