My program is not returning the expected output, I tried very hard but I don't know how to do for this code. What can I do ?
Expected output
1 2 3 4 5 6 7 8 ......2000
Actual output
1 2 3 4 5 6 1 2 3 4 5 6 ..1000
Main
public class Race_ConditonTest {
    public static void main(String[] args) {
        Race_Condition2 R1 = new Race_Condition2();
        Race_Condition2 R2 = new Race_Condition2();
        R1.start();
        R2.start();
   }
}
RaceCondition2 (sub class)
public class Race_Condition2 extends Thread{
    Race_Condition R= new Race_Condition();
    public void run() {
       R.sum();
    }   
}
RaceCondition class (super class)
public class Race_Condition  {
   int x=0;
   public int Load(int x){
       return x;
   }
    public void Store(int data) {
      int x= data;
      System.out.println(x);
    }
    public int Add(int i,int j) {
       return i+j ;
    }
    public void sum() {
       for (int i=0 ; i<1000 ; i++) { 
           this.x=Load(x);
           this.x=Add(x,1);
           Store(x);        
       }
    }
}