Porque que jlabel está desaparecendo

Olá, eu gostaria neste código
`

package Objects;

import java.awt.Image;
import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Passaro extends JFrame{
static Random rdm = new Random();
static boolean bo = rdm.nextBoolean();
static int passquant = rdm.nextInt(9); 
Passaro(){
	
 setTitle("Título");
 setVisible(true);
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 setLocationRelativeTo(null);
 setExtendedState(JFrame.MAXIMIZED_BOTH);
}

public static void main(String[]args){  
Passaro pass = new Passaro();
   
 for(int i = 0; i<=passquant; ++i){
	 new Thread(new Runnable(){ 
	   public void run(){
	   Pass p = new Pass();
	   int x = pass.getWidth();
	   final int y = rdm.nextInt(pass.getHeight());
	   pass.add(p);
		    while(true){
	         x-=5;
		     p.setLocation(x,y);
		  try {
			Thread.sleep(500);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	    }
	   } 
	 }).start(); 
	   System.out.println("loop is running...");
	   passquant = rdm.nextInt(9);
	   bo = rdm.nextBoolean();
     }

}
}
`
Fizesse com que as jlabels fossem adicionadas dentro de jframe na posição mais no canto possível (que possa ser visto), na posição y aleatória de acordo com a altura da janela e ele fosse aumentando a posição x infinitamente.
Obs: Eu gostaria de que fosse adicionadas mais de uma vez a label(no máximo 10)
Alguém sabe porque que a label é adicionada e depois do sleep ela desaparece, e porque ela só é adicionada uma vez, ao invés de muitas?

Eu consegui resolver, o código ficou assim
`

package Objects;

import java.awt.Component;
import java.awt.Image;
import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;

public class Passaro extends JFrame{
 Random rdm = new Random();
 boolean bo;
 int passquant;
 public void remover(Component c){
  this.remove(c);
 }

Passaro(){
 setTitle("Título");
 setVisible(true);
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 setLocationRelativeTo(null);
 setExtendedState(JFrame.MAXIMIZED_BOTH);
 setLayout(null);
 
 int width = this.getWidth();

passquant = rdm.nextInt(5);
 while(true){
  for(int i = 0; i<=passquant; ++i){
   bo = rdm.nextBoolean();
   System.out.println(bo);
   if(bo==true){ 
 ImageIcon img = new ImageIcon(getClass().getResource("/Assets/pássaro-i.gif"));
 img.setImage(img.getImage().getScaledInstance(img.getIconWidth()-500,img.getIconHeight()-400, Image.SCALE_DEFAULT));
 int largura = img.getIconWidth();
 int altura = img.getIconHeight();
 JLabel p = new JLabel(img);
 p.setBounds(0,rdm.nextInt(this.getHeight()),largura,altura);
 this.add(p);
 this.repaint();
 new Thread(new Runnable(){
	 public void run(){
		System.out.println("rund");
		while(true){
		 if(p.getX()!=width){
		  p.setBounds(p.getX()+1,p.getY(),largura,altura);
		 }else if(p.getX()==width){
            remover(p);
		 }
		  try {
			Thread.sleep(10);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		}
	 }
     }).start();
   }else if(bo==false){
   ImageIcon img = new ImageIcon(getClass().getResource("/Assets/pássaro.gif"));
   img.setImage(img.getImage().getScaledInstance(img.getIconWidth()-500,img.getIconHeight()-400, Image.SCALE_DEFAULT));
   int largura = img.getIconWidth();
   int altura = img.getIconHeight();
   JLabel p = new JLabel(img);
   p.setBounds(this.getWidth()-100,rdm.nextInt(this.getHeight()),largura,altura);
   this.add(p);
   this.repaint();
     new Thread(new Runnable(){
    	 public void run(){
    		 System.out.println("run");
    		while(true){
       		 if(p.getX()!=width){
    		  p.setBounds(p.getX()-1,p.getY(),largura,altura);
       		 }else if(p.getX()==width){
       			 
       		 }
       		 try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
    		}
    	 }
     }).start();
}
 try {
	Thread.sleep(2300);
} catch (InterruptedException e) {
	e.printStackTrace();
}
 passquant = rdm.nextInt(5);
}
}
 }
 public static void main(String[]args){
 Passaro pass = new Passaro();

}
}

`