java static 并发_Java static并发问题

1.

只要你的静态方法不访问全局变量的话,就不会有并发问题

访问全局变量肯定会出现并发问题,这是毫无疑问的

静态方法内部的变量,都是局部变量,每次调用静态方法时都会重新分配内存空间,所以是安全的。 也就是是说只要你的静态方法不访问全局变量的话,就不会有并发问题

JAVA代码验证实验我一直想做,但是没有时间,如果哪位有兴趣,可以提供一下。

2.

并发是指可以同时进行多个任务。

他跟static没有关系,是跟线程有关,java里并发安全我个人认为主要是两点:

1、数据资源竞争,也就是多个线程访问同一个资源,会造成安全问题;

2、原子性操作,也就是说我有一系列操作需要完成,但中间不得有其它线程影响到我的操作。

数据资源竞争:java里有2种变量,成员变量,局部变量

局部变量不会发生安全问题,因为局部变量是在方法里,每次这个方法执行都是一个独立的数据,不会被其他线程访问

成员变量则可能会影响并发安全,比如:非静态成员变量是每个对象自身所有,如果这个对象的某个方法访问了自身的成员变量,当这个对象被不同的线程多次调用这个方法时,你说是不是会有问题?静态成员变量则更加如此了,任何该类的对象都可以调用。

原子性操作:原子性说简单点就是一系列操作或过程必须是一个整体,否则就会造成意外。比如说:多个人在商店买同一个东西,从付钱、拿货、结算必须是一个整体,如果某个人已经把这个东西买走了,另一个人却处于付账阶段,那么最终肯定会出问题,但如果这三个操作是一个整体就不会有问题,只有一个人完全执行完了这3个,另一个人才能执行,二不允许同时进行。

当然我说的不一定准确,这个并发是很复杂的,你可以先了解个大概

java里解决并发安全是会牺牲性能的,但你要知道,1、并不是所有的并发安全都需要解决,有些在实际需求下是允许的,2、并发安全问题,不一定要靠并发安全去解决,也有可能是设计的缺陷。3、并发访问同一个资源不一定会出问题,比如:只有一个线程在写操作或者全部是读操作。

原文:http://www.cnblogs.com/qishuai/p/4499834.html

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

Linhao Ma

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值