// **_Locks are associated with files, not channels. Use locks to coordinate?with external processes, not between threads in the same JVM._**
锁是与文件相关的,而不是Channel。
用于跟外部进程协调,而不是在同一JVM中的线程之间;
所以也就是说, 一个应用运行期间, 如果lock了, 另外再启动一个应用访问同一个文件, 是锁定的;
但是这个锁, 与同一个应用中的多个线程无关;
核心词:
- lock与文件相关
- 跟外部进程协调(注意不是内部线程)
"锁定"这个概念, 用来隔离的不是thread, 而是进程;就比如你用java实现了两个NIO的软件,一个取名叫"画图", 一个取名叫"PS"; 这时你打开“画图”打开一个照片 a.jpg, lock了; 再打开"PS", 打开这个 a.jpg是被锁定的;
但是呢, 这个lock不是管理你“画图”应用中多个线程的协调, 它不干这个!!就是你提到的“不适用于”
所以其实这句话是讲这个FileLock的用途是隔离一个文件在进程之间的争抢;不是隔离一个文件在进程内多个线程的竞争的!
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…