Variavel da classe que extende de thread dando erro

4 respostas
F

se alguem poder me ajudar eu agradeço muito.
esta dando um erro, e já tentei mudar nome da variavel, tirar o modificador de acesso e nada adiantou...

public class minithread extends Thread {
	
	public minithread(String name){
		super(name);
	}
        private int sleepTime=0;//o erro esta ocorrendo nessa linha
	tempo=(int)(Math.random()*5000);
	public void run(){
		try{
		 System.err.println(getName() + "going to sleep");
		 Thread.sleep(sleepTime );
		}
		catch ( InterruptedException exception ) {
	          System.err.println( exception.toString() );
		 }
		 
		System.err.println( getName() + " done sleeping" );
	}	
}
a classe do main é essa
public class ExercicioCasa {
	public static void main(String[] args) {
		Thread thread1= new Thread("1");
		Thread thread2= new Thread("2");
		Thread thread3= new Thread("3");
	    Thread thread4= new Thread("4");
	    thread1.start();
	    thread2.start();
	    thread3.start();
	    thread4.start();
	    System.err.println("estudo de THREADs");
	   
	}

4 Respostas

getAdicted

Olá amigo,

Eu fiz algumas alterações no seu código, vamos lá:

1 - Você não declarou a variável tempo, portanto, eu adicionei a variável sleepTime para receber o resultado da instrução que gera o numero aleatório.

2 - Eu adicionei o
sleepTime=(int)(Math.random()*5000);
ao método run, jah que a cada thread iniciada, um numero aleatório será gerado. 3 - No método main você poderia iniciar a sua thread que está contida na sua classe, portanto, ficará dessa forma:
Thread thread1= new Minithread ("1");
Segue o código completo:
public class Minithread extends Thread {  
      
    private int sleepTime=0;
    public Minithread(String name){  
        super(name);  
    }  
         
    public void run(){  
	  sleepTime=(int)(Math.random()*5000);	
        try{  
         System.err.println(getName() + "going to sleep");  
         Thread.sleep(sleepTime );  
        }  
        catch ( InterruptedException exception ) {  
              System.err.println( exception.toString() );  
         }  
           
        System.err.println( getName() + " done sleeping" );  
    } 
    public static void main(String[] args) {  
        Thread thread1= new Minithread ("1");  
        Thread thread2= new Minithread ("2");  
        Thread thread3= new Minithread ("3");  
        Thread thread4= new Minithread ("4");  
        thread1.start();  
        thread2.start();  
        thread3.start();  
        thread4.start();  
        System.err.println("estudo de THREADs");  
         
    }     
}

Seria melhor voce postar a fonte da qual do tirou esse exemplo, caso não voce não a tenha implementado sozinho.

Eh uma boah prática voce começar os nomes das suas classes com letras maiusculas.

Qualquer coisa, avisa!

[]'s

ViniGodoy

Outra coisa. Dizer que está “dando um erro” não nos dá informação alguma. Seria melhor dizer qual erro está dando.

Não espere que o pessoal vá copiar seu código, compilar, corrigir, etc.

Alguns até podem fazer isso, mas você reduz muito as chances de ter um tópico respondido se contar com tanta boa vontade.

F

Muito obrigado pelo esclarecimento sou novato aqui estou em fase aprendizado
vou usar as boas praticas

getAdicted

Por favor, edita o assunto do seu primeiro post, e acrescenta a tag [RESOLVIDO], se o foi! =)

Bons estudos!

[]'s

Criado 8 de janeiro de 2013
Ultima resposta 10 de jan. de 2013
Respostas 4
Participantes 3