尽可能同步对象

时间:2013-07-29 03:50:31

标签: java synchronized

是否可以在检测到对象非空锁定时同步块。 它尝试同步的某种最佳努力。 我可以用这种方式编写代码,但看起来有点冗长:

if ( lock_object != null )
{
    synchronized(lock_object) {
        doSomething();
    }
}
else
{
    doSomething();
}

是否有更好的方法来构建此代码?

2 个答案:

答案 0 :(得分:1)

这是可能的,但没有任何意义。方法doSomething读取/写入一些数据,比如方法所属的对象的字段。最明显和最可靠的方法是声明方法doSomething已同步,以及可以从不同线程调用的所有其他方法。同步块仅用于优化,新手程序员应避免使用它。

至于“尽力而为”,编程的最大努力意味着可靠且经过验证的功能。所有其他“努力”都不是最好的,包括你的代码。

答案 1 :(得分:0)

正如你所说:

  每当检测到对象不为空时

同步一个块

我认为你最好在以下时使用:

while( lock_object != null ){

    synchronized(lock_object) {
      // your not null activities
    }

}  
// your null activities