pass the runnable to a Thread constructor that accepts a runnable argument
subclass Thread and override its void run() method when the constructor doesn't accept a runnable argument. Thread implements the Runnable interface, which makes Thread objects runnable as well.