0

我有一个场景,我使用下面的代码创建了具有 FileOutputStream 初始化的 Lock 对象。这个对象应该在整个生命周期中都存在于应用程序中。我有一个静态 Arraylist,我将在其中添加这个锁对象。此应用程序将总共有 10 个锁对象可用。

  Class Lock

    // instance variable
    FileOutputStream fos = new FileOutputStream(file);

    // acquire lock api()
     try
     {
         FileLock lock = fos.getChannel().tryLock();
     }
     catch(OverlappingFileLockException ex)
     {
        // Happens when lock is aquired by other resures. 
        return false;
     }


     // release lock api
     if(lock !=null)
                  lock.release

由于此对象将在 App 的整个生命周期中都存在,因此我不愿意在每次请求锁定时打开和关闭流。所以,我选择在初始化时打开一次。我想知道这种设计会产生什么影响。另外,我可以通过什么方式监控此泄漏如何影响我的应用程序和系统?我怀疑每当我们重新启动服务器时,FileDescriptors 仍然会打开。但是,我不确定它会导致什么额外开销。

注意-服务器每个周末都会重新启动

您的意见将真正帮助我重新思考并提出其他建议。提前致谢 !!

4

0 回答 0