关于多线程共享数据的一点思考

今天学习线程的时候,对于并发问题有一点疑惑,书上关于这点的说明也比较详尽:

当同时运行的线程需要共享数据,此时需要考虑其它线程的状态和行为,否则不能保证程序运行结果的正确性。

同时还举了一个例子:三个人买票的问题。

按理来说应该很容易理解,但是我的一不小心钻进了一个牛角尖。

前面说到单CPU运行的时候一次只能调用一个线程,想到这里我觉得一次调用一个线程怎么还会出现并发的问题。。。。

思来想去没有结果,也没好好的百度。

在准备求助别人的时候忽然就通了!!

举个例子:

run(){
count++;
system.out.println(count);
}

上面这段代码,我们新建三个线程分别为线程1,线程2,count初始值为0

假设线程1先抢占到资源,在执行完count++这一行代码之后它释放CPU资源,这时被线程2抢占到资源线程2同样先执行count++然后执行system.out.print(count)这段代码,这时输出的第一行数字为2。

然而正常情况第一行输出的数字应该是1二这是却是2

这就出现了并发问题!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值