Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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

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 - Fatal编程技术网

Java 修改公共资源

Java 修改公共资源,java,multithreading,Java,Multithreading,我的设想是: 我有一张excel表格。一些线程需要同时修改它 我需要实现这一点,我正在寻找最佳实践解决方案。 synchronized方法可能是解决方案?如果是,那么它不会造成饥饿问题,或者每个线程都必须等待很长时间吗 还有其他方法吗?Excel工作表不应用作工作记忆。有了这样的资源,您必须管理对它的访问。你不能让线程随意地写。我怀疑您是否会找到支持并发的JavaExcel模块 创建包含所有数据的数据结构。在流程开始时,将Excel工作表加载到此数据结构中。让线程修改此数据结构而不是excel电

我的设想是: 我有一张excel表格。一些线程需要同时修改它

我需要实现这一点,我正在寻找最佳实践解决方案。
synchronized
方法可能是解决方案?如果是,那么它不会造成饥饿问题,或者每个线程都必须等待很长时间吗


还有其他方法吗?

Excel工作表不应用作工作记忆。有了这样的资源,您必须管理对它的访问。你不能让线程随意地写。我怀疑您是否会找到支持并发的JavaExcel模块

创建包含所有数据的数据结构。在流程开始时,将Excel工作表加载到此数据结构中。让线程修改此数据结构而不是excel电子表格。定期或在更改完成后,将数据结构内容导出回Excel电子表格

您必须自己处理数据并发问题。这里没有本机事务处理。您希望确保不编写某个线程对其进行了某些更改的电子表格的副本,但不编写其完整集的副本。这可能会产生令人困惑的结果。另外,如果两个线程同时修改相同的数据,这也会造成混淆


理想情况下,在这种情况下,数据保存在某个数据库中。这是存储由多个线程并发修改的数据的理想位置。主要来说,它还支持事务。如果使用此解决方案,您可以创建一个脚本,每五分钟轮询一次数据库并更新Excel电子表格。

Excel工作表不应用作工作内存。有了这样的资源,您必须管理对它的访问。你不能让线程随意地写。我怀疑您是否会找到支持并发的JavaExcel模块

创建包含所有数据的数据结构。在流程开始时,将Excel工作表加载到此数据结构中。让线程修改此数据结构而不是excel电子表格。定期或在更改完成后,将数据结构内容导出回Excel电子表格

您必须自己处理数据并发问题。这里没有本机事务处理。您希望确保不编写某个线程对其进行了某些更改的电子表格的副本,但不编写其完整集的副本。这可能会产生令人困惑的结果。另外,如果两个线程同时修改相同的数据,这也会造成混淆


理想情况下,在这种情况下,数据保存在某个数据库中。这是存储由多个线程并发修改的数据的理想位置。主要来说,它还支持事务。如果使用此解决方案,您可以创建一个脚本,每五分钟轮询一次数据库并更新Excel电子表格。

您是否编写了任何代码?通常,同步是下面的做法,但这会让其他线程在其中一个线程访问它时等待。不,我还没有编写任何代码。我想避免这个等待问题,你有没有写过代码?通常,同步是下面的做法,但这会让其他线程在其中一个线程访问它时等待。不,我还没有编写任何代码。我想避免这种等待问题