Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止非并发数据结构/对象上的数据丢失?_Java_Multithreading_Concurrency_Apache Commons - Fatal编程技术网

Java 如何防止非并发数据结构/对象上的数据丢失?

Java 如何防止非并发数据结构/对象上的数据丢失?,java,multithreading,concurrency,apache-commons,Java,Multithreading,Concurrency,Apache Commons,我想用它来计算移动平均线。其思想是多个线程将向该对象添加值,每分钟另一个线程计算平均值和其他统计数据(并清空该对象) 因为线程的数量和高频率(每个线程每秒写入一次),我担心如果我只使用 synchronized(descriptiveStatistic) { } 每次我想访问它的时候 解决这个问题的最佳方法是什么 提前谢谢 与其清空统计数据对象,我将替换它,即从一个新实例开始收集新的统计数据(如果这确实是您所需要的-为什么首先清空统计数据)?此外,您还可以查看SynchronizedDescr

我想用它来计算移动平均线。其思想是多个线程将向该对象添加值,每分钟另一个线程计算平均值和其他统计数据(并清空该对象)

因为线程的数量和高频率(每个线程每秒写入一次),我担心如果我只使用

synchronized(descriptiveStatistic) {
}
每次我想访问它的时候

解决这个问题的最佳方法是什么


提前谢谢

与其清空统计数据对象,我将替换它,即从一个新实例开始收集新的统计数据(如果这确实是您所需要的-为什么首先清空统计数据)?此外,您还可以查看
SynchronizedDescriptiveStatistics
,它是
DescriptiveStatistics
的线程安全替代方案。那会有帮助吗?如果没有,您可能想详细说明您的需求,例如,您需要什么样的并发。谢谢@Thomas,这真的很有帮助。我不知道我怎么会错过同步描述统计。我需要清空统计数据作为每分钟需要的重置(例如,将分钟平均值保存到数据库中)。替换对象是一个好主意!