Java 修改公共资源
我的设想是: 我有一张excel表格。一些线程需要同时修改它 我需要实现这一点,我正在寻找最佳实践解决方案。Java 修改公共资源,java,multithreading,Java,Multithreading,我的设想是: 我有一张excel表格。一些线程需要同时修改它 我需要实现这一点,我正在寻找最佳实践解决方案。 synchronized方法可能是解决方案?如果是,那么它不会造成饥饿问题,或者每个线程都必须等待很长时间吗 还有其他方法吗?Excel工作表不应用作工作记忆。有了这样的资源,您必须管理对它的访问。你不能让线程随意地写。我怀疑您是否会找到支持并发的JavaExcel模块 创建包含所有数据的数据结构。在流程开始时,将Excel工作表加载到此数据结构中。让线程修改此数据结构而不是excel电
synchronized
方法可能是解决方案?如果是,那么它不会造成饥饿问题,或者每个线程都必须等待很长时间吗
还有其他方法吗?Excel工作表不应用作工作记忆。有了这样的资源,您必须管理对它的访问。你不能让线程随意地写。我怀疑您是否会找到支持并发的JavaExcel模块 创建包含所有数据的数据结构。在流程开始时,将Excel工作表加载到此数据结构中。让线程修改此数据结构而不是excel电子表格。定期或在更改完成后,将数据结构内容导出回Excel电子表格 您必须自己处理数据并发问题。这里没有本机事务处理。您希望确保不编写某个线程对其进行了某些更改的电子表格的副本,但不编写其完整集的副本。这可能会产生令人困惑的结果。另外,如果两个线程同时修改相同的数据,这也会造成混淆
理想情况下,在这种情况下,数据保存在某个数据库中。这是存储由多个线程并发修改的数据的理想位置。主要来说,它还支持事务。如果使用此解决方案,您可以创建一个脚本,每五分钟轮询一次数据库并更新Excel电子表格。Excel工作表不应用作工作内存。有了这样的资源,您必须管理对它的访问。你不能让线程随意地写。我怀疑您是否会找到支持并发的JavaExcel模块 创建包含所有数据的数据结构。在流程开始时,将Excel工作表加载到此数据结构中。让线程修改此数据结构而不是excel电子表格。定期或在更改完成后,将数据结构内容导出回Excel电子表格 您必须自己处理数据并发问题。这里没有本机事务处理。您希望确保不编写某个线程对其进行了某些更改的电子表格的副本,但不编写其完整集的副本。这可能会产生令人困惑的结果。另外,如果两个线程同时修改相同的数据,这也会造成混淆
理想情况下,在这种情况下,数据保存在某个数据库中。这是存储由多个线程并发修改的数据的理想位置。主要来说,它还支持事务。如果使用此解决方案,您可以创建一个脚本,每五分钟轮询一次数据库并更新Excel电子表格。您是否编写了任何代码?通常,同步是下面的做法,但这会让其他线程在其中一个线程访问它时等待。不,我还没有编写任何代码。我想避免这个等待问题,你有没有写过代码?通常,同步是下面的做法,但这会让其他线程在其中一个线程访问它时等待。不,我还没有编写任何代码。我想避免这种等待问题