zoukankan      html  css  js  c++  java
  • Runnable和Thread的区别

    在java中实现多线程:

    1.Thread:继承Thread类,Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。

    1)通过run()方法启动线程:此时结果很有规律,先第一个对象执行,然后第二个对象执行,并没有相互运行。

    class MyThread extends Thread{
      private String name;
      public MyThread(String name) {
        super();
        this.name = name;
      }
      public void run(){
        for(int i=0;i<10;i++){
          System.out.println("线程开始:"+this.name+",i="+i);
        }
      }
    }

    public class ThreadDemo01 {
      public static void main(String[] args) {
        MyThread mt1=new MyThread("线程a");
        MyThread mt2=new MyThread("线程b");
        mt1.run();
        mt2.run();
      }
    }

     2)调用start()方法,则会通过JVM找到run()方法。

    启动start()方法启动线程:程序可以正常完成交互式运行。

    public class ThreadDemo01 { 
      public static void main(String[] args) { 
        MyThread mt1=new MyThread("线程a"); 
        MyThread mt2=new MyThread("线程b"); 
        mt1.start(); 
        mt2.start(); 
      } 
    }

    2.Runnable接口:在实际开发中一个多线程的操作很少使用Thread类,而是通过Runnable接口完成。

    class MyThread implements Runnable{  
      private String name;  
      public MyThread(String name) {  
        this.name = name;  
      }
      public void run(){  
        for(int i=0;i<100;i++){  
          System.out.println("线程开始:"+this.name+",i="+i);  
        }  
      }  
    }; 

    在使用Runnable定义的子类中没有start()方法,只有Thread类中才有。可以通过Thread类来启动Runnable实现的多线程。(start()可以协调系统的资源):

    public class ThreadDemo01 {  
        public static void main(String[] args) {  
          MyThread mt1=new MyThread("线程a");  
          MyThread mt2=new MyThread("线程b");  
          new Thread(mt1).start();  
          new Thread(mt2).start();  
        }  
    } 

    3.区别和联系:在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:

    • 避免点继承的局限,一个类可以继承多个接口。
    • 适合于资源的共享
  • 相关阅读:
    小能客服
    bootstrap 字体图标
    在线绘图(PS)(海报)
    UI教程
    免费在线设计网站
    测量史上首个易语言工程测量模块
    在ado.net中实现oracle存储过程调用两种方式
    VS一些快捷键
    解决Win10家庭版没有‘本地用户和组’问题
    参照示例搭建一个Quertz + Topshelf的一个作业调度服务(基础)
  • 原文地址:https://www.cnblogs.com/jiktiv123/p/7718348.html
Copyright © 2011-2022 走看看