difference between thread class and runnable interface