工作中遇到的,NN_NAKED_NOTIFY,
表示找不到notify对应的wait方法
还可能原因是你你锁的是同一个变量,但是FindBugs不能识别成是同一个变量,即使两个变量指向同一个地址,findbugs也为认为你是两个不一样的变量,举个例子吧
<code class="hljs javascript has-numbering"><span class="hljs-built_in">Object</span> a = <span class="hljs-keyword">new</span> <span class="hljs-built_in">Object</span>(); <span class="hljs-built_in">Object</span> b = a; synchronized(a) { a.notifyAll(); } synchronized(b) { b.wait(); }</code>
这种情况虽然运行时不会报错,但是findbugs会报错
所以还是锁同一个,调用同一个对象的notifyAll()和wait()
<code class="hljs autohotkey has-numbering">Object <span class="hljs-literal">a</span> = new Object()<span class="hljs-comment">;</span> Object b = <span class="hljs-literal">a</span><span class="hljs-comment">;</span> synchronized(<span class="hljs-literal">a</span>) { <span class="hljs-literal">a</span>.notifyAll()<span class="hljs-comment">;</span> } synchronized(<span class="hljs-literal">a</span>) { <span class="hljs-literal">a</span>.wait()<span class="hljs-comment">;</span> }</code>
这样就不报FindBugs错误了