代码之家  ›  专栏  ›  技术社区  ›  secmask

捕获应用程序状态的安全方法?

  •  1
  • secmask  · 技术社区  · 16 年前

    如果我有这样的申请:

    Class Application {  
        List state1 = new ArrayList();  
        Map state2  = new HashMap();  
    }  
    

    1 回复  |  直到 16 年前
        1
  •  1
  •   cletus    16 年前

    同步的代价有两个方面。

    1. 开销 synchronized 本身;和

    2. 在该块中执行的操作的成本。

    举个例子:

    public synchronized int[] getState() {
     return new int[] { state1.size(), state2.size() };
    }
    

    this 是用来锁的。这种情况下的手术费用极为低廉 size() Colleciton Map ). 所以唯一需要担心的开销就是 已同步 它自己。

    所以就用吧 已同步 . 它的可读性要高得多,而且性能根本不是您想要的问题,除非还有其他问题。