Java 如何防止非并发数据结构/对象上的数据丢失?
我想用它来计算移动平均线。其思想是多个线程将向该对象添加值,每分钟另一个线程计算平均值和其他统计数据(并清空该对象) 因为线程的数量和高频率(每个线程每秒写入一次),我担心如果我只使用Java 如何防止非并发数据结构/对象上的数据丢失?,java,multithreading,concurrency,apache-commons,Java,Multithreading,Concurrency,Apache Commons,我想用它来计算移动平均线。其思想是多个线程将向该对象添加值,每分钟另一个线程计算平均值和其他统计数据(并清空该对象) 因为线程的数量和高频率(每个线程每秒写入一次),我担心如果我只使用 synchronized(descriptiveStatistic) { } 每次我想访问它的时候 解决这个问题的最佳方法是什么 提前谢谢 与其清空统计数据对象,我将替换它,即从一个新实例开始收集新的统计数据(如果这确实是您所需要的-为什么首先清空统计数据)?此外,您还可以查看SynchronizedDescr
synchronized(descriptiveStatistic) {
}
每次我想访问它的时候
解决这个问题的最佳方法是什么
提前谢谢 与其清空统计数据对象,我将替换它,即从一个新实例开始收集新的统计数据(如果这确实是您所需要的-为什么首先清空统计数据)?此外,您还可以查看
SynchronizedDescriptiveStatistics
,它是DescriptiveStatistics
的线程安全替代方案。那会有帮助吗?如果没有,您可能想详细说明您的需求,例如,您需要什么样的并发。谢谢@Thomas,这真的很有帮助。我不知道我怎么会错过同步描述统计。我需要清空统计数据作为每分钟需要的重置(例如,将分钟平均值保存到数据库中)。替换对象是一个好主意!