Is it possible to do multiple threads run_test by fork join for test cases

Assumed I have created many classes for test cases under UVM environment and want to run them parallelly.
For example:

initial begin
fork
run_test(“test_a”);
run_test(“test_b”);
join
end

Is it possible?
According to my tracing codes in run_test from uvm_root.svh, it seems to be not feasible because UVM check
if(m_children.exists(“uvm_test_top”)) begin
uvm_report_fatal(“TTINST”,
“An uvm_test_top already exists via a previous call to run_test”, UVM_NONE);
#0; // forces shutdown because $finish is forked
end

But, UVM should allow to run them sequentially
For example
initial uvm_top.finish_on_completion=0;
initial begin
run_test(“test_a”);
run_test(“test_b”);
end

Is my understanding correct? If so, what is the way to do test cases by multiple threads parallelly?

Thanks for your reply in advance.

In reply to SImon Wu:

You don’t want to run multiple UVM tests under the same simulator invocation. It will make debugging extremely difficult, and you don’t want to hardcode the test names in the run_test() calls.

You want to use the +UVM_TESTNAME argument on the simulator command line. If you want to run multiple tests, run multiple invocations of your simulator.