32.黑马程序员-多线程(实现Runnable接口)

来源:互联网 发布:淘宝店买卖平台 编辑:程序博客网 时间:2024/05/21 09:38

------- android培训、java培训、期待与您交流! ----------

    1.Runnable(可运行的)接口概述
  • 第二种创建线程的方式:声明实现Runnable接口的类,该类然后实现run方法。
  • Runnable接口只有一个方法void run(),覆盖这个方法,run()中写线程代码。
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class 类名 implements Runnable{
    方法1;
    方法2
    public void run(){
    // other code…
    }
    属性1
    属性2
      
    }
    2.定义:
  • 第一步:声明实现Runnable接口的类class。
  • 第二步:覆盖void run()方法。//将线程要运行的代码存放在run方法中。
  • 第三步:声明一个class的对象,如:PrimeRun p = new PrimeRun(143);//143是线程名。
    • 注意:这个对象p还不是线程,因为创建线程必须是Thread对象或者Thread子类对象,它与Thread没有关系。那么怎么样让这个对象与Thread有关系呢?Thread类中定义了一个构造方法Thread(Runnable target)。
  • 第四步:new Thread(p).start();//Thread(p)把实现Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。
    • 为什么将这个子类对象传给Thread类的构造函数?
    • 因为,自定义的run方法所属的对象是Runnable接口的子类对象。所以要让线程去指定指定对象的run方法。就必须明确该run方法所属对象。
  • 第五步:调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。
    3.两种创建方式的区别
  • 实现方式和继承方式的区别:
    • 实现方式好处:避免了单继承的局限性。在定义线程时,建议使用实现方式。
    • 两种方式区别:
      • 继承Thread:线程代码存放在Thread子类run方法中。
      • 实现Runnable:线程代码存放在接口的子类的run方法。
    4.声明实现了Runnable接口的对象,并没有创建线程,thread类及其子类才能创建线程。
  • 如Ticket t =new Ticket(); //Ticket实现了Runnable
  • Thread t1 = new Thread(t); //创建了一个线程,把实现了 Runnable的ticket对象作为参数,创建线程。
  • t1.start();//线程开始运行








原创粉丝点击