Ok here is a pretty strait forward question asked in a complicated way, I have an application that will create a new thread every time the mouse is clicked, obviously the threads created need to act independantly of each other, but for some reason when you click more than once, the faster the threads go.

The application i am making is just a simple little game, that is eventually going to be a scrolling shooter game, when the user clicks, a new object called laser is created, and then a thread for that laser is created which will move the laser up the screen by sleeping for 10milli seconds, then changing the y value of the laser, then calling repaint. When you click more than once, the lasers speed up and i think its because there are multiple threads with the same name and java is getting confused with the timings, here is the code for the main class in the game:

Code:
import java.util.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import sun.audio.*;



public class MouseDisplay extends JPanel implements MouseListener, MouseMotionListener, Runnable{

	private JPanel scorePanel = new JPanel();
    private Spaceship spaceship = new Spaceship(Toolkit.getDefaultToolkit().getImage("spaceship.JPG"), 0,0);
    private int x,y;
    private Laser laser;
    private Vector laserVector = new Vector();
    private Thread laserThread;
    
    
    /* Mouse listener methods  */
    
    public void mouseClicked(MouseEvent event) {}    
    public void mouseEntered(MouseEvent event) {}
    public void mouseExited(MouseEvent event) {}
    public void mouseReleased(MouseEvent event) {}    
    public void mousePressed(MouseEvent event) {
    	x = event.getX();
    	y = event.getY();
    	
    	Image laserImage = Toolkit.getDefaultToolkit().getImage("laser.JPG");
    	laser = new Laser(laserImage,x+12,y);
    	laserVector.add(laser);
    	createThread();
    	    	
    	
    }
    public void mouseMoved(MouseEvent event) {}
    public void mouseDragged(MouseEvent event) {}
    	
	public MouseDisplay(){
		setBackground(Color.white);	
		addMouseListener(this);	
		addMouseMotionListener(this);
				
		//set spaceship cursor
    	Image cursorImage = Toolkit.getDefaultToolkit().getImage("spaceship.JPG");
		Cursor spaceshipCursor = Toolkit.getDefaultToolkit().createCustomCursor(cursorImage, new Point( 0, 0), "" );
		setCursor( spaceshipCursor );
		
	}
	
	public void run(){
		
		while(true){
		for(int c=0;c<laserVector.size();c++){
			if(laserVector.elementAt(c) != null){
				Laser tempYLaser = (Laser) laserVector.elementAt(c);
				int tempy = tempYLaser.getY();
				tempYLaser.setY(--tempy);
			}
		}
		try {
			laserThread.sleep(10);
		} catch (InterruptedException e) {
			System.out.println("Error running thread: " + e);
		}
		repaint();
		}
	}

	public void paint(Graphics g){
    	super.paint(g);
    	for(int k=0;k<laserVector.size();k++){
    	//System.out.println(laserVector.size());
    		if(laserVector.elementAt(k) != null){
	    		Laser tempLaser = (Laser) laserVector.elementAt(k);
	    		Image tempImage = tempLaser.getImage();
	    		if(tempImage != null){
	    			g.drawImage(tempImage, tempLaser.getX(), tempLaser.getY(), this);
	    		}else{
	    			System.out.println("error drawing picture");
	    		}
    		}
    	}
    }
    
	public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
		repaint();
		return true;
	}
	public void createThread(){
            laserThread = new Thread(this);
            laserThread.start();
    }

}