Using fork join_none to span threads in a for loop in parallel, which is executed in forever loop

I tried this example:

class sc;
  int abc;
  parameter MAX_EX_PARAM=10;
task example_monitor_signal;
   for (int i = 0; i < MAX_EX_PARAM; i++) begin
     automatic int j = i;
     fork
      monitor_signal (j);
     join_none
   end
endtask
  
  task monitor_signal(input int a);
    wait(abc==a);
    $display("a=%d",a);
  endtask

task main_phase ();
 fork
  example_monitor_signal ();
 join_none
endtask
endclass

module abc;
  sc s1;
  
  initial begin
    s1=new();
    s1.main_phase();
    s1.abc=5;
    #2;
    s1.abc=9;
    #3;
    s1.abc=6;
  end
endmodule

output:-

vsim -voptargs=+acc=npr

run -all

a= 5

a= 9

a= 6

exit