Rita,
Cada objeto Java tem o que chamamos de monitor, um mecanismo que permite acesso sincronizado de várias threads a trechos de código num método desse objeto. Esse monitor controla uma fila de uma ou mais threads que estão esperando por uma notificação. Para fazer com que um thread espere chamamos o método wait(), para notificar uma thread que está na fila usamos notify. Para notificar todas usamos notifyAll.
Esses métodos só podem ser chamados por uma thread que é dona do monitor do objeto. Para ser dona de um monitor de um objeto uma thread precisa estar em uma de 3 situações:
-Estar executando um método sincronizado desse objeto;
-Estar num bloco sincronizado que sincroniza esse objeto;
-Para objetos do tipo Class, ao executar um método estático sincronizado dessa classe;
Quanto aos shift existe uma excelente explicação em:
http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#5121
Espero ter ajudado,
Flexa
At 12:07 17/1/2003, you wrote:
Qual a diferenca entre wait(), notify(), notifyAll();
Alguem pode me explicar :public class TestShift {
- << Un-signed left shift
- >> Signed right shift
- >>> Un-signed right shift
public static void main(String args[]) {
int x = 1;
x = x >> 31;
int y = -1;
y = y >> 31;
System.out.println("The ouput of x is " + x );
System.out.println("The ouput of y is " + y );
}
}
public class TestShift {
public static void main(String args[]) {
int x = 1;
x = x << 31;
int y = -1;
y = y << 31;
System.out.println("The output of x is " + x );
System.out.println("The output of y is " + y );
}
}
public class TestShift {
public static void main(String args[]) {
int x = 1;
x = x >>> 31;
int y = -1;
y = y >>> 31;
System.out.println("The output of x is " + x );
System.out.println("The output of y is " + y );
}
}