Array de trheads e metodo run

renho que fazer um gerendiador de downloads com trheads quero criar um arry das threads para startar todas ao mesmo tempo de um metodo só que ele só estar a ultima instancia da thred que eu criei tenho ceeteza qieue o meu arraylist de threads ta certo porque ele só estarta a ultima

codigo

processa as trheads



    public void cadastra(){
	    	try {
	    	String url =JOptionPane.showInputDialog(null,"endereço da internet");
	        String Temp=JOptionPane.showInputDialog(null,"tempo da atualização");
	        String salvarOnde=JOptionPane.showInputDialog(null,"Local pra salvar na makina ");
	   	 
	        int tempo = Integer.parseInt(Temp);
	        
	        Temporizador t = new Temporizador(url,salvarOnde,tempo);
	        ArrayList<Temporizador> ArrayThreads = new  ArrayList<Temporizador>(); 
	        ArrayThreads.add(t);
				
				
				
				String cadastramais=JOptionPane.showInputDialog(null,"Criar mais ");
	             if(cadastramais.equals("1")){
	             
	            	 cadastra();
	             }
	             else{
	            	 rodar(ArrayThreads);
	             }
				
				
				
				
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
	}





    public void rodar(ArrayList<Temporizador> ArrayThreads){
	    	
	    	
	    	Iterator it = ArrayThreads.iterator(); //Cria um iterator apartir da lista de itens

	    	while (it.hasNext()) { //Varre a lista
	    		Temporizador download=(Temporizador)it.next(); //pega o elemento da lista
	    		download.run();
	    		System.out.println(download.link);
	    		
	    	  
	    	} 
	    	
	    	
	    
   	    	
	    }



classe que extende thread





	    public Temporizador(String link ,String onde ,int tempo) throws IOException{
	    this.link=link;
	    this.onde=onde;
	    this.tempo=tempo;
	   
	    

	    
	   }
	    
	public void run() {

		try {

			
			for(;;){
				
				ManipulaUrl download = new ManipulaUrl(link,onde); 
                this.sleep(tempo);
                
		
	             
	             
                   
			}
			
			
			
		} catch (Exception e) {
			// TODO: handle exception
		}


	}

Toda vez que vc cria a sua thread, vc cria junto o ArrayList.
Ou seja, td vez que se cria uma Thread se cria um ArrayList junto, entao o ArrayList só add o elemento naquele momento.
E isso vira um circulo.

Faz o seguinte, cria o ArrayList antes, sacou, fora desse circulo.

falow

voce diz assim

ArrayList<Temporizador> ArrayThreads = new  ArrayList<Temporizador>(); 
	 boolean cad = true;
	 
	public ProcessaTreads() {}

	
	
	
	  
	
	
	
	    public void cadastra(){
	    	try {
	    	String url =JOptionPane.showInputDialog(null,"endereço da internet");
	        String Temp=JOptionPane.showInputDialog(null,"tempo da atualização");
	        String salvarOnde=JOptionPane.showInputDialog(null,"Local pra salvar na makina ");
	   	 
	        int tempo = Integer.parseInt(Temp);
	        
	        Temporizador t = new Temporizador(url,salvarOnde,tempo);
	       
	        ArrayThreads.add(t);
				
				
				
				String cadastramais=JOptionPane.showInputDialog(null,"Criar mais ");
	             if(cadastramais.equals("1")){
	             
	            	 cadastra();
	             }
	             else{
	            	 rodar(ArrayThreads);
	             }
				
				
				
				
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
	}

ele da na mesma coisa processa somente aultima que eu criei e não todas