Programação multhreading x Jframe

Ola…
desenvolvi um programa em java(com ajuda de algumas pessoas do proprio fórum), um jframe, sendo que, onde o usuario clicar com o mouse deverá surgir uma bola que se movimente entre as extremidades do jframe.
tudo isso utilizando thread(runnable). Porém, preciso modificar esse código para que cada clique do usuario crie uma nova bola sem apagar a anterior. Por favor galera… preciso aprender a fazer isso se nao to ferrado na facul!
segue o codigo original …

import javax.swing.JFrame;
import java.awt.Graphics;
import java.awt.event.*;
import java.util.concurrent.*;

public class Bola extends JFrame implements Runnable
{
	int x1,x2,y1,y2;
	int c=400;
	Bola()
	{
		super("Linhas com o Mouse");
		

		addMouseListener
		(
			new MouseAdapter()
			{
				public void mousePressed(MouseEvent event)
				{
					x1=event.getX();
					y1=event.getY();

				}
				public void mouseReleased(MouseEvent event)
				{
					x2=event.getX();
					y2=event.getY();
					repaint();
				}
			}
		);
		setSize(400,200);
		setVisible(true);
	}

	public void paint(Graphics g)
	{
			try
			{
			
			Thread.sleep(1);			
			super.paint(g);
			repaint();
			
			}
			catch (Exception e){}
				
			
		
		g.fillOval(x1,y1,20,20);	        
			
		if(x1<c)
			{x1++;
			}
			
			if(x1==399)
			{
			x1=399;
				c=3;
			}
			if(x1>c)
			{
				
				x1--;
				
			}
			if(x1==c)
			{c=399;
			}
	}



	public void run()
{

	while(true)
	    {


		try{
			repaint();
			Thread.sleep(1000);

			}



	catch (Exception e)
	{
	System.out.println("erro");}

	    }
}


	public static void main(String args[])
	{

		Bola r1= new Bola();
		ExecutorService te= Executors.newFixedThreadPool(2);
		te.execute(r1);
		te.shutdown();


		Bola app = new Bola();
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
	}
}

será que dividir o arquivo em duas classes separadas me ajudaria?
digo uma para a bola e outra para as threads…

O ideal é deixar todos os teus objetos (entidades abstratas independentes) em arquivos separados…