「译」Implement Runnable vs Extend Thread in Java

本文来自https://www.geeksforgeeks.org/implement-runnable-vs-extend-thread-in-java/

Java中,我们可以通过以下两种方式定义线程:

  • extends Thread
  • implements Runnable

在第一种方法中,我们的类始终扩展Thread类。 没有扩展任何其他class的机会。 因此,我们缺少继承的好处。

在第二种方法中,在实现Runnable接口时,我们可以扩展任何其他类。 因此,我们能够利用继承的好处。

由于上述原因,与扩展Thread类相比,建议实现Runnable接口方法。

扩展Thread类与实现Runnable接口之间的区别:

  • 当我们扩展Thread类时,我们甚至无法扩展任何其他类;当我们实现Runnable时,我们可以为我们的类节省空间,以便将来或现在扩展任何其他类。
  • 当我们扩展Thread类时,我们的每个线程都会创建唯一的对象并与其关联。 当我们实现Runnable时,它将同一对象共享给多个线程。

接下来从代码层面更好的理解下:

class Test extends Thread  
{ 
    public void run() 
    { 
        System.out.println("Run method executed by child Thread"); 
    } 
    public static void main(String[] args) 
    { 
        Test t = new Test(); 
        t.start(); 
        System.out.println("Main method executed by main thread"); 
    } 
} 

输出:

Main method executed by main thread
Run method executed by child Thread
class Test extends Thread  
{ 
    public void run() 
    { 
        System.out.println("Run method executed by child Thread"); 
    } 
    public static void main(String[] args) 
    { 
        Test t = new Test(); 
        t.start(); 
        System.out.println("Main method executed by main thread"); 
    } 
} 

输出:

Main method executed by main thread
Run method executed by child Thread
posted @ 2020-03-08 21:42  antonGo  阅读(181)  评论(0)    收藏  举报