试图了解findbugs多线程错误

时间:2011-09-26 04:22:44

标签: java findbugs

2 个答案:

答案 0 :(得分:1)

  

http://findbugs.sourceforge.net/bugDescriptions.html#SP_SPIN_ON_FIELD唯一的问题是该字段不易变,对吗?

正确。

  

http://findbugs.sourceforge.net/bugDescriptions.html#MDM_WAIT_WITHOUT_TIMEOUT令人困惑 - 这是什么意思?

我不再在列表中看到它了。

答案 1 :(得分:0)

回答你的第一个问题: -

没有SP_SPIN_ON_FIELD不仅与非易失性实例字段相关,即使易失性字段也可能导致此错误。

Plz参考下面的代码,它有一个volatile字段,但仍显示此错误(SP_SPIN_ON_FIELD): -

public class FindBugSP
{
    private volatile int mCountOne = 0;
    /**
     * DEFAULT CONSTRUCTOR
     * 
     */
    private FindBugSP()
    {
        //DO NOTHING
        super();
    }

    /**
     * Method implementing actual scenario of FindBugs bug code - SP 
     */
    void problem()
    {
        while(true)
        {
            if(mCountOne == 0)
            {
                break;
            }
        }
    }

    /**
     *  Method implementing solution for actual scenario of FindBugs bug code - SP
     */
    void solution()
    {
        while(true)
        {
            if(mCountOne ==5)
            {
                break;
            }
            mCountOne++;
        }
   }

}

现在回答你的第二个问题: - MDM_WAIT_WITHOUT_TIMEOUT已从bug代码列表中删除。