-
共享锁和独占锁的经典应用,是控制最初用于读取的共享文件的更新。某个进程要读取文件, 会先取得该文件或该文件部分区域的共享锁。第二个希望读取相同文件区域的进程也会请求共享 锁。两个进程可以并行读取,互不影响。但是,假如有第三个进程要更新该文件,它会请求独占 锁。该进程会处于阻滞状态,直到既有锁定(共享的、独占的)全部解除。一旦给予独占锁,其他 共享锁的读取进程会处于阻滞状态,直到独占锁解除。这样,更新进程可以更改文件,而其他读取 进程不会因为文件的更改得到前后不一致的结果。
-
文件锁有建议使用和强制使用之分。建议型文件锁会向?出请求的进程?供当前锁定信息,但 操作系统并不要求一定这样做,而是由相关进程进行协调并关注锁定信息。多数 Unix 和类 Unix 操 作系统使用建议型锁,有些也使用强制型锁或兼而有之。
强制型锁由操作系统或文件系统强行实施,不管进程对锁的存在知道与否,都会阻止其对文件 锁定区域的访问。微软的操作系统往往使用的是强制型锁。假定所有文件锁均为建议型,并在访问 共同资源的各个应用程序间使用一致的文件锁定,是明智之举,也是唯一可行的跨平台策略。依赖 于强制文件锁定的应用程序,从根子上讲就是不可移植的。
3.
java.nio 中的类被特意地设计为支持级联调用。您可能已经在 StringBuffer 类中看
到了级联调用的使用。
如果聪明地使用级联调用,就能产生简?,优?,易读的 代码。但如果?用,就会使代码不知所?。当级联调用可 以增加可读性并使让您的目标更加明确时使用它。如果使 用级联调用会使代码作用不够清晰,那么请不要使用它。 请时刻保证您的代码易于他人阅读。