说,我的应用程序有n个线程试图读取相同的集合对象,比如List。是否会有任何种族密码或死锁或任何类似的问题?换句话说,是否有必要锁定List以进行只读操作?
答案 0 :(得分:2)
完全取决于您是否要限制用户数量。通常,如果您在Windows中看到excel文件,当它在网络上共享时,一次最多可以打开10个人进行阅读。这个数字可以增加到任何数字,或者就此而言根本不需要任何限制。作为程序员,您是否想要限制,这是您的愿望。您唯一需要记住的是,如果文件位于服务器上,并且如果每秒有100万个读取请求,如果没有施加限制,则可能是您的系统速度变慢而且不会能够为任何人服务。相反,如果你强制锁定说一次只能读取100个用户,你可以确保你的系统不会超载。考虑到最坏的情况,这是我正在解释的实时场景。
但如果你只是为了学习而要求它,我会说它不是必需的。如果n个用户正在打开同一个文件进行阅读,理想情况下,您可以访问所有n个用户来读取集合对象。不需要同步机制。当没有同步时,将没有死锁或任何东西。
希望这可以消除你的困惑。感谢。
答案 1 :(得分:1)
除非读取操作导致集合对象的内部状态更改,否则不一定。