Попытка понять многопоточные ошибки findbugs - PullRequest
0 голосов
/ 26 сентября 2011

http://findbugs.sourceforge.net/bugDescriptions.html#SP_SPIN_ON_FIELD это только проблема, если поле не volatile, верно?

http://findbugs.sourceforge.net/bugDescriptions.html#MDM_WAIT_WITHOUT_TIMEOUT сбивает с толку - что это значит?

Ответы [ 2 ]

1 голос
/ 24 июля 2012

http://findbugs.sourceforge.net/bugDescriptions.html#SP_SPIN_ON_FIELD это только проблема, поле не является изменчивым, верно?

Правильно.

http://findbugs.sourceforge.net/bugDescriptions.html#MDM_WAIT_WITHOUT_TIMEOUT сбивает с толку - что это значит?

Я больше не вижу его в списке.

0 голосов
/ 21 декабря 2012

Дайте ответ на свой первый вопрос: -

Нет, SP_SPIN_ON_FIELD связан не только с полями энергонезависимого экземпляра, но даже поле с изменчивым значением может также привести к этой ошибке.

Пожалуйста, обратитесь к приведенному ниже коду, он имеет изменяемое поле и все еще показывает эту ошибку (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 был удален из списка кодов ошибок.

...