Questões sobre o java

2 respostas
P

1 - Em programação, especialmente em questões de threads, existe o termo “happens-before relationship”. Eu não consigo perceber o seu significado, e especialmente, gostaria de saber como manter uma relação deste tipo entre duas threads. Ou seja, garantir que um thread corra primeiro que outra.

2 - O Sun Java VM, ou outra java VM é possível de trocar as ordens das instruções para melhorar a performance? Esta foi a informação que retive de um google video. Quem quiser, ver

http://video.google.com/videoplay?docid=8394326369005388010&q=java+concurrency&total=10&start=0&num=10&so=0&type=search&plindex=1

3 - Se, de um método synchronized invocar outro método, a invocação e execução do 2º método herda as propriedades do synchronized do 1º método?

Ex.

public synchronized void methodA()

{

methBod();

}
public void methodB()

{



}

Thanks,

2 Respostas

eduveks

1 - Usando Semaforos (notify e wait):
:arrow: esplicação
:arrow: exemplo

3 - Sim.

ViniGodoy

pedrosacosta:

3 - Se, de um método synchronized invocar outro método, a invocação e execução do 2º método herda as propriedades do synchronized do 1º método?
Não. Se o segundo método puder ser invocado diretamente, ele não será sincronizado sob qualquer aspecto.

Portanto, não é uma boa prática já que, mesmo privado, é possível que uma modificação futura faça com que outro da mesma classe invoque o trecho não sincronizado diretamente.

Se você precisa que os dois métodos tenham sincronização, sincronize os dois. O java trabalha muito bem com sincronizações sob o mesmo objeto, portanto, não há motivos para não fazê-lo.

Criado 9 de julho de 2007
Ultima resposta 9 de jul. de 2007
Respostas 2
Participantes 3