Java thread implementation vs declaration i'm currently studying Java and i want to know what is the difference between implementing Runnable to a class and declaring a new thread and executing what you need inside.   Thread t = new Thread(){      public void run() {     //code here     } }; t.start();   vs  Thread t = new Thread(My_class_with_runnable_implementation); t.start();
"implements Runnable" vs "extends Thread" in Java From what time I've spent with threads in Java, I've found these two ways to write threads:  With implements Runnable:  public class MyRunnable implements Runnable {     public void run() {         //Code     } } //Started with a "new Thread(new MyRunnable()).start()" call   Or, with extends Thread:  public class MyThread extends Thread {     public MyThread() {         super("MyThread");     }     public void run() {         //Code     } } //Started with a "new MyThread().start()" call   Is there any significant difference in these two blocks of code ?
What does if __name__ == "__main__": do? Given the following code, what does the if __name__ == "__main__": do?  # Threading example import time, thread  def myfunction(string, sleeptime, lock, *args):     while True:         lock.acquire()         time.sleep(sleeptime)         lock.release()         time.sleep(sleeptime)  if __name__ == "__main__":     lock = thread.allocate_lock()     thread.start_new_thread(myfunction, ("Thread #: 1", 2, lock))     thread.start_new_thread(myfunction, ("Thread #: 2", 2, lock))