 <p>You need an instance of an object that implements <code>Runnable</code> to pass to the Thread constructor; the call <code>new HelloRunnable()</code> gives that to you.</p> <p>You need a Thread object to run; the call to <code>new Thread()</code> gives that to you.</p> <p>You call <code>start()</code> on that new <code>Thread</code> instance; it calls the <code>run()</code> method on the <code>Runnable</code> instance you gave to its constructor.</p>