Semaforo - Estou com dúvidas

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!

Por favor edite sua mensagem e coloque o código entre as tags code /code

Blz.

Você recebe o semaforo no construtor, o parametro que você está passando é null.

Logo no metódo run

download.acquire();  

Você terá um nullPointerException

dê uma olhada nisso e veja se resolve o problema.