我有一个名为FILELOGGER
的Singleton类和名为number_of_lines的属性。
我将确保只有一个对象能够为FILELOGGER
类创建单独的类。
在我的应用程序中,我的对象能够将其写入文件并为每次写入更新number_of_lines
属性。
如果我在多线程环境中使用此设计模式,该怎么办?当其他线程尝试更新时,它应该如何锁定number_of_lines
属性。而且我可能会延迟记录数据并且性能将会下降。
比如说,例如,线程T1
在10:10:10时记录,T2
也在相同的时间记录,并且都试图更新number_of_lines
属性。
如何解决这个问题?是否有任何替代设计模式来解决这个问题。谢谢你的时间。
答案 0 :(得分:0)
您可以按照已经完成的方式同步对整个文件的访问权限,也可以使用 cons : snapshotting 进行替代。
string
变量。number_of_lines
。当此专用线程需要更新时,number_of_lines
将被同步。快照可能会在10秒,1分钟,1小时等时间间隔内发生...... 此方法的主要问题是应用程序/系统崩溃将意味着丢失自上次快照以来未持久保存到磁盘的数据,但由于您的应用程序使用内存数据,因此应该提高整体性能。 / p>
答案 1 :(得分:0)
此外,您必须以线程安全的方式实现单例模式。我认为最好的方法是使用内部类来保证多线程应用程序中单例的目的。