First example: No various threads. Both execute in a single (existing) thread. No thread creation.
R1 r1 = new R1();
R2 r2 = new R2();
r1 and r2 are just two separate objects of classes that perform the Runnable interface and thus achieve the run() method. When you call r1.run() you are effecting it in the current thread.
Second example: Two separate threads.
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1 and t2 are recipients of the class Thread. When you call t1.start(), it begins a new thread and calls the run() order of r1 within to execute it within that new thread.