4
|
Ed Mazur · 技术社区 · 15 年前 |
![]() |
1
2
是的,正如您概述的那样,此代码未正确同步。如果从未获得写锁,读写锁就没有用处;就好像没有锁一样。
使用传统
|
![]() |
2
4
这是一个锁定文件和解锁文件的示例程序。
|
![]() |
3
2
您可能需要考虑使用文件系统锁,而不是管理自己的锁。
呼叫
|
![]() |
4
1
ReentranTreadWriteLock不支持对单个锁对象进行操作,而是支持最多65535个递归写锁和65535个读锁。 分配读写锁
然后再研究它们… 另外:您不能处理异常情况,也不能在锁定之后解锁。在输入方法(如互斥锁)时调用锁,然后在try/catch块中使用finally部分中的unlock进行工作,例如:
|
![]() |
5
0
好吧,8.5年是很长的一段时间,但我希望这不是necro…
我的问题是,我们需要访问流以尽可能地使用原子来读写。一个重要的部分是我们的代码应该在访问同一文件的多台机器上运行。然而,互联网上的所有例子都停止解释如何锁定
现在,从远处看,有一个特定的顺序是有意义的:
但是,为了允许在Java中释放锁,流不能关闭!正因为如此,整个机制变得有点奇怪(而且是错误的?). 为了使自动关闭工作正常进行,必须记住,JVM以与try段相反的顺序关闭实体。这意味着流程如下:
测试表明这不起作用。因此,自动关闭一半,其余的以良好的OL“Java 1时尚:
请注意,使用此方法的方法必须仍然是
请分享经验,以防你有任何… |