Java 对在内部创建列表的静态方法的并发访问

Java 对在内部创建列表的静态方法的并发访问,java,multithreading,concurrency,thread-safety,Java,Multithreading,Concurrency,Thread Safety,我们发现了一个奇怪的bug,在调查代码之后,它似乎唯一可能出现的地方是并发问题的静态方法内部 由于创建了内部列表,这段代码会出现任何奇怪的问题吗 如果是这种情况,我是否应该将该列表作为线程安全的参数传递(或者公开并直接使用其他静态方法) publicstaticlist傻瓜列表(myobjectobj,List-listToCheck){ List checkedWords=新建ArrayList(); for(字符串wordToCheck:listToCheck){ if(文字检查器(obj,

我们发现了一个奇怪的bug,在调查代码之后,它似乎唯一可能出现的地方是并发问题的静态方法内部

由于创建了内部列表,这段代码会出现任何奇怪的问题吗

如果是这种情况,我是否应该将该列表作为线程安全的参数传递(或者公开并直接使用其他静态方法)

publicstaticlist傻瓜列表(myobjectobj,List-listToCheck){
List checkedWords=新建ArrayList();
for(字符串wordToCheck:listToCheck){
if(文字检查器(obj,文字检查)){
选中单词。添加(关键字);
}
}
返回校验字;
}
专用静态布尔字检查器(MyObject对象,字符串字){
//剂量
返回结果;
}

如前所述,此代码没有线程问题


但是,如果您的
doSomething
代码对
静态
数据执行某些操作,则线程问题很可能会导致错误。

您说您怀疑存在并发问题,但您的代码示例没有提供有关有多少线程可能调用这些方法或,关于这些线程可能共享的数据。并发问题总是围绕着共享数据。如果没有共享数据,那么就不会有问题;但是,
obj
可以共享吗?
listToCheck
是否可以共享?
doSomething
是否触及任何共享数据?好的,我发现了另一个问题!不管怎样,我很高兴知道我和这个人在一起会很安全。谢谢大家,并发总是一场噩梦!:)
public static List<String> fooList(MyObject obj, List<String> listToCheck) {
    List<String> checkedWords = new ArrayList<>();

    for (String wordToCheck : listToCheck) {
        if (wordChecker(obj, wordToCheck)) {
            checkedWords.add(keyword);
        }
    }

    return checkedWords;
}

private static boolean wordChecker(MyObject obj, String word) {
    // doSomething
    return result;
}