java同时调用一个方法_java两个线程同时调用一个类里的同一个方法,这样会出现什么情况?有没有问题?...

展开全部

根据不同的情2113况可能存在5261的情况有:

1、如4102果该方法不涉及写1653公共的资源比如一个回静态的变量或者写文件,修改答某个数据库的值的时候没有影响。

2、比如你这个类里的方法只是对输入的参数做一个计算然后返回计算的值就没有影响。

3、但是如果是修改公共的资源比如修改数据库中存储的一个value则有可能出现问题,如:

public void writeDb(String key, String value) {

collectiondb();

write(key, value);

closeDbCollection();

}

4、因为Java的线程运行顺序是不一定的,可以第一个线程运行完连接数据库到后挂起了,这时候第二个线程开始运行,如果你的collectiondb()处理使用的是类中的一个实例变量Connection conn来保存数据库的连接,当第二个线程运行完毕以后conn也被关闭了,第一个线程继续执行write函数写数据库值的时候就会抛出异常。

这是一个例子,还有其他可能产生脏数据的问题。

多线程如果使用公共资源的话最好在方法上声明synchronized关键字让其同步。

a48409b19a937341a037e091cb87d43b.png

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

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值