是否可以在检测到对象不为空时同步块以进行锁定。它的某种最大努力尝试同步。我可以这样写代码,但看起来有点冗长:
if ( lock_object != null )
{
synchronized(lock_object) {
doSomething();
}
}
else
{
doSomething();
}
有没有更好的方法来构建这段代码?
是否可以在检测到对象不为空时同步块以进行锁定。它的某种最大努力尝试同步。我可以这样写代码,但看起来有点冗长:
if ( lock_object != null )
{
synchronized(lock_object) {
doSomething();
}
}
else
{
doSomething();
}
有没有更好的方法来构建这段代码?
这是可能的,但没有任何意义。该方法doSomething
读取/写入一些数据,例如该方法所属对象的字段。最明显和最可靠的方法是声明方法 doSomething
同步,以及可以从不同线程调用的所有其他方法。同步块仅用于优化,新手程序员应避免使用它。
至于“尽力而为”,编程中的尽力而为不亚于可靠和经过验证的功能。所有其他“努力”都不是最好的,包括您的代码。
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