java在持有对象锁之前进行判空,算是非法操作吗?

比如有个对象 myObj

if(myObj != null) {
synchronized(myObj) {
...
}
}

myObj != null这个算是在未持有锁的情况下操作了对象吗?

这个只是条件表达式而已,怎么会算是操作对象

肯定不算,**并且在synchronized() {}块里面还会要在判断一次,双重检测**,
1.外面加一次判断是优化synchronized{}同步语句块的,因为synchronized{}执行的时候是比较慢的,而obj!=null 为false的时候就不用进来了,能提高性能,优化代码,
2.里面再次判断是因为 这个外面的 obj可能会被其他线程操作(读还好,写就完了),所以到synchronized{}块里面还会再进行一次判断,确保所操作资源同步
这个也是恰巧上次在QQ的腾讯课堂上听的一个阿里老师讲的
有帮助的话,点个赞,关注就更好了(●'◡'●)

当然不算,synchronized(锁对象)的锁对象是不能为空的,如果你不判断的话,后面会发生运行时异常。
此外加锁通常是在变对象属性值的操作,或者读取对象属性时不允许其他线程同时操作的情况。

这两个是不同概念的操作,一个是判空,一个是同步