FindBugs NN_NAKED_NOTIFY

工作中遇到的,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错误了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值