为了账号安全,请及时绑定邮箱和手机立即绑定

使用@Async 注释时的线程安全

使用@Async 注释时的线程安全

慕后森 2021-09-29 13:07:20
我@async在spring-boot应用程序中使用 java注释来处理和上传 excel 文件。即使我大致同时上传多个文件,它也能正常工作。但是,我想知道我实现的以下代码是否是线程安全的。我的理解是它不是,它可能会失败。我无法重现并发问题我的代码:while (rowIterator.hasNext()) {      Row row=rowIterator.next();    if(row.getRowNum()==0)         continue;    BatchScript script=new BatchScript();                           String rtId=row.getCell(0).toString();    String query=row.getCell(1).toString();    String agent=row.getCell(2).toString();    script.setRtId(rtId);    script.setQuery(query);    script.setAgentName(agent);}在代码中 BatchScript 是我的 POJO 类。你能告诉我它是否会失败吗?
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

如果 Rows 集合被多个线程共享,则存在ConcurrentModificationException. 当线程改变您的 Rows 列表时就是这种情况。如果不是,您的代码中就没有共享可变性,因此我们可以说它是线程安全的。


查看完整回答
反对 回复 2021-09-29
?
ibeautiful

TA贡献1993条经验 获得超5个赞

因为你创建的对象是在一个方法调用中,所以它是一个本地对象,所有本地对象都是线程安全的。

希望这可以帮助!


查看完整回答
反对 回复 2021-09-29
  • 2 回答
  • 0 关注
  • 987 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信