Thread

5 respostas
S

Olá, possuo a seguinte situação

Classe A extends Thread {

   public A() {
   ....
    }


    public void run() {
          ....
         metodoZ(x,y);
         metodoR(e){
         ...
    }

    public void metodoZ(int valor1, int valor2){
       ....
    }

    public void metodoR(int valor3){
       ....
    }

}

O que esta ocorrendo é se eu instanciar vario objetos A os metodos Z e R nem sempre são executados. Eu gostaria de saber o porque eles nao estão sendo executados e qual a solução.

Se alguem poder me auxiliar

5 Respostas

sethbra

Você está chamando o método start quando cria objetos da classe A?

Tem que ser assim

A a = new A();
a.start();
S

Abstraí a informação de A.start. o Problema não é esse. Refazendo… :smiley:

public class A extends Thread {

	public A() {
		BlockingQueue<Integer> list = new LinkedBlockingQueue<Integer>);
	}
	
	public void run() {
		while (true) {
           		int i = list.take();
			metodoZ(i,y);

			metodoX(i);

		}
	}

	public void metodoZ(int x, int z) {
		....
	}

	public void metodoX(int x) {
		....

	}
}

public static void main(String[] args) {

	A a = new A();
	a.start=
	a.list.put(...)

	A b = new A();
	b.start=
	b.list.put(...)

}

O que estou querendo dizer é se eu fizer o que esta dentro do name (+ ou - isso) nem sempre os metodos metodoZ metodoX são executados pelas instancias b e a

gRoOve

Amigo, por favor utilize as tags code, fica difícil ler um código assim.

N

Bom Dia,

bem de inicio, as threads podem se comportar de maneira inesperada, o que aconselho é que você utilize a palavra sincronize nos seus métodos…

gRoOve

Neninho:
Bom Dia,

bem de inicio, as threads podem se comportar de maneira inesperada, o que aconselho é que você utilize a palavra sincronize nos seus métodos…


Vale lembrar que isso não é uma regra, deve-se analisar a situação para sincronizar os métodos pois desta forma sua aplicação pode ficar com baixo desempenho.

Criado 31 de janeiro de 2011
Ultima resposta 1 de fev. de 2011
Respostas 5
Participantes 4