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

我@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 类。你能告诉我它是否会失败吗?


慕后森
浏览 996回答 2
2回答

BIG阳

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

ibeautiful

因为你创建的对象是在一个方法调用中,所以它是一个本地对象,所有本地对象都是线程安全的。希望这可以帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java