4

是否可以在检测到对象不为空时同步块以进行锁定。它的某种最大努力尝试同步。我可以这样写代码,但看起来有点冗长:

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

有没有更好的方法来构建这段代码?

4

2 回答 2

1

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

至于“尽力而为”,编程中的尽力而为不亚于可靠和经过验证的功能。所有其他“努力”都不是最好的,包括您的代码。

于 2013-07-29T05:29:34.870 回答
0

as you said :

synchronized a block whenever it detects an object is not null

I think you'd better use while as :

while( lock_object != null ){

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

}  
// your null activities
于 2013-07-29T03:59:08.530 回答