一段时间以来,我一直在思考一个问题:当多个线程可以访问该列表时,如何同步对列表 (ArrayList ...) 的访问更安全?在列表本身上同步更安全还是创建一个锁对象并使用它来同步更安全?
最佳答案
我相信这就是你想要的。可能有两种情况(最终):
您使用单独的锁进行同步。
someMethod(){
synchronized(lock){
// code to access/modify List here
}
}
你直接在 List 实例上同步
synchronized(list)
{
// code to access/modify list here
}
如果
someMethod()
,第一种情况是安全的是访问列表的唯一方法。来自不同流的任何其他线程都可以修改实际列表。第二种情况锁定实际的列表实例,因此,您始终可以保证一次只有一个线程访问/修改列表。
关于java - 应该在列表本身还是在锁定对象上进行同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25260481/