创建多线程方式二:实现Runnable接口

1.创建一个实现了Runnable接口的类

2.实现类去实现Runnable中的抽象方法:run()

3.创建实现类的对象

4.将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象

通过Thead类的对象调用start方法

比较创建线程的两种方式:

开发中:优先选择实现Runnable接口的方式

  1.实现的方式没有类的单继承性的局限性

  2.实现的方式更适合处理多个线程有共享数据的情况

联系:public  class Thread implements Runnable

相同点:两种方式都需要重写run(),将线程要执行的逻辑声明在run()中

线程的生命周期

  新建: 当一个Thread类或其子类的对象呗声明创建时,新生的线程对象处于新建状态

  就绪:处于新建状态的线程被start()后,将进入线程队列等待CPU时间片,此时它已经具备了运行的条件,只是没分配CPU资源

  运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run()方法定义了线程的操作和功能

  阻塞:某种特殊情况下,被人为挂起或执行输入输出操作时,让出CPU并临时中止自己的执行,进入阻塞状态

  死亡:线程完成了它的全部工作或线程被提前强制性地中止或出现异常导致结束

就绪到运行:获取CPU执行权,反向则是失去执行权 或yield()

阻塞:sleep() join()等待同步锁 wait()

原文地址:https://www.cnblogs.com/ergePython/p/11885691.html

时间: 2024-07-30 11:05:36

创建多线程方式二:实现Runnable接口的相关文章

Java之多线程方式二(实现Runnable接口)

/** * 创建多线程的方式二:实现Runnable接口 * 1. 创建一个实现了Runnable接口的类 * 2. 实现类去实现Runnable中的抽象方法:run() * 3. 创建实现类的对象 * 4. 将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象 * 5. 通过Thread类的对象调用start() * * * 比较创建线程的两种方式. * 开发中:优先选择:实现Runnable接口的方式 * 原因:1. 实现的方式没有类的单继承性的局限性 * 2. 实现的方

java多线程编程中实现Runnable接口方法相对于继承Thread方法的优势

 java多线程创建方法http://blog.csdn.net/cjc211322/article/details/24999163  java创建多线程方法之间的区别http://blog.csdn.net/cjc211322/article/details/25000449 java多线程编程中实现Runnable接口方法相对于继承Thread方法的优势

03_线程的创建和启动_实现Runnable接口方式

[线程的创建和启动的步骤(实现Runnable接口方式)] 1.定义Runnable接口的实现类,并重写其中的run方法.run()方法的方法体是线程执行体.class SonThread  implement Runnable{ public void run(){......}} 2.创建Runnable接口实现类的实例.   sonThread s1=new SonThread(); 3.用该实例作为Thread的target来创建Thread对象.   Thread t1 =new Th

JAVA线程应用Thread:创建线程的第二种方式:实现Runnable接口

/* 需求:卖票小程序! 思路:实现多个窗口(线程)同时售票. 步骤:1,定义类实现Runnable接口. 2,覆盖Runnable接口中的run方法. 3,通过Thread类创建线程对象. 4,将Runnable接口的子类对象作为实际参数传入Thread类的构造函数当中. 5,调用Thread类的start方法开启线程并调用Runnabke接口的run方法. */ 代码如下 class Ticket implements Runnable//extends Thread//实现Runnable

java_10:线程创建的方式二

除了继承Thread类和实现Runnable接口两种创建线程的方式,JDK5.0还新增类两种线程创建方式: 新增方式一:实现Callable接口 好处:(1)与使用Runnable相比,Callable功能更强大些(2)相比run()方法,可以有返回值(3)方法可以抛出异常(4)支持泛型的返回值(5)需要借助FutureTask类,比如获取返回结果Future接口:1)可以对具体的Runnable\Callable任务的执行结果进行取消.查询是否完成.获取结果等2)FutureTask是Futu

多线程-----Thread类与Runnable接口的区别

第一个继承Thread类来实现多线程,其实是相当于拿出三件事即三个卖早餐10份的任务分别分给三个窗口,他们各做各的事各卖各的早餐各完成各的任务,因为MyThread继承Thread类,所以在newMyThread的时候在创建三个对象的同时创建了三个线程:实现Runnable的, 相当于是拿出一个卖早餐10份的任务给三个人去共同完成,newMyThread相当于创建一个任务,然后实例化三个Thread,创建三个线程即安排三个窗口去执行. 一个类只能继承一个父类,存在局限:一个类可以实现多个接口.在

探Java多线程Thread类和Runnable接口之间的联系

首先复习一下Java多线程实现机制,Java实现多线程方法有如下这么几种: 1.继承了(extends)Thread类 2.实现了(implements)Runnable接口 也就是说  有如下两种情况 情况1: 继承Thread类.重写其方法run() .    然后new之.调用Start()方法 1 public class TestThread 2 { 3 private int i; 4 public static void main(String[] args) 5 { 6 // T

创建多线程方式一(继承Thread类)

步骤: 1.定义一个类继承Thread. 2.重写run方法. 3.创建子类对象,也就是线程对象. 4.调用start方法.开启线程并让线程执行,同时还会告诉jvm去调用run方法.(start做了两件事,开启线程和调用run方法.) 线程对象调用run方法和调用start方法区别(面试常考): 调用run方法不开启线程.仅是对象调用方法. 调用start开启线程,并让jvm调用run方法在开启的线程中执行. 实例: class Demo extends Thread{ private Stri

创建线程的第二种方式------实现Runnable接口的方式

package cn.itcast.demo16.Demo07.Runnable; /** * @author newcityman * @date 2019/7/22 - 23:17 */public class RunnableImpl implements Runnable { @Override public void run() { for (int i = 0; i <20 ; i++) { System.out.println(Thread.currentThread().getN