Equivalentes?

6 respostas
leandro.alves
public class SyncTest {

    public static synchronized void methodA(){

        /* CODE */

    }

    public static void methodB(){

        synchronized(SyncTest.class){

            /* CODE */

        }

    }

}

Talvez uma dúvida boba, mas, estes métodos são equivalentes ?

6 Respostas

walissongpi

Em termos sim. A diferença em que myMetodA() todo o código estrito dentro do corpo dele será sincronizado. Já no myMetodB () somente o codigo dentro do bloco sincronizado será sincronizado. :smiley:

leandro.alves

Intendi… era o que eu imaginava, aproveitando …

Para sincronizar em um objeto estático e melhor que ou é necessário que o contexto também seja estático ?

walissongpi

leandro.alves:

Intendi… era o que eu imaginava, aproveitando …

Para sincronizar em um objeto estático e melhor que ou é necessário que o contexto também seja estático ?


HUm… não entendi sua pergunta (demoro entender). Pode reformula-la?

leandro.alves

Isso :

public class SyncTest {

    public static String stringVar;

    public static void methodB(){

        synchronized(stringVar){

            /* CODE */

        }

    }

}

É “melhor” que isso :

public class SyncTest {

    public static String stringVar;

    public void methodB(){

        synchronized(stringVar){

            /* CODE */

        }

    }

}
walissongpi
leandro.alves:
Isso :
public class SyncTest {

    public static String stringVar;

    public static void methodB(){

        synchronized(stringVar){

            /* CODE */

        }

    }

}

É "melhor" que isso :

public class SyncTest {

    public static String stringVar;

    public void methodB(){

        synchronized(stringVar){

            /* CODE */

        }

    }

}

Os códigos acima estão identicos, mas eu entendi sua dúvida. Blocos sincronizados são mais recomendados do que métodos sincronizados porque o bloco é mais específico. Só use métodos sincronizados quando todo o código do corpo do método exigir. :D

D

Olá,

Na verdade, o que eu acho que o Leandro quer saber é se é melhor usar um método de instância synchronized ou um método de classe synchronized , não é isso Leandro ?

Se for isso, acho que depende do contexto, se for um contexto estático, usar o método estático.
Criado 30 de março de 2010
Ultima resposta 31 de mar. de 2010
Respostas 6
Participantes 3