Boa noite galera!
Não estou conseguindo implementar um semaforo neste sisteminha de download, é somente para estudo, mas é válido.
Alguém pode me ajudar?
Segue meu código
[b]import java.util.Random;
import java.util.concurrent.Semaphore;
public class Download extends Thread{
private Semaphore download;
String nome;
int tamanhoArquivo, tamanhoBaixo;
Random gerador = new Random();
public Download(String n, Semaphore download) {
tamanhoArquivo = gerador.nextInt(1000) * 1000;
tamanhoBaixo = 0;
nome = n;
this.download=download;
}
public void run(){
try{
download.acquire();
int percentualBaixado;
for(tamanhoBaixo = 0; tamanhoBaixo <= tamanhoArquivo;tamanhoBaixo += gerador.nextInt(50)){
percentualBaixado = (int)((float)tamanhoBaixo/tamanhoArquivo*100);
System.out.println(nome + " => " + percentualBaixado + "% baixado de " + tamanhoArquivo);
try {
sleep((long)(Math.random() * 10000));
} catch (InterruptedException e) {}
}
System.out.println(nome + " => Download realizado com sucesso.");
download.release();
}
catch(InterruptedException ie) {ie.printStackTrace();}
}
public static class main{
@SuppressWarnings("unused")
private static Semaphore download = new Semaphore(10, true);
public static void main(String[] args){
Download t1 = new Download("Arquivo 1", null);
Download t2 = new Download("Arquivo 2", null);
Download t3 = new Download("Arquivo 3", null);
t1.start();
t2.start();
t3.start();
}
}
}[/b]
O que será?
Desde já agradeço!