Java基础--多线程的两种实现方式及区别
2020-04-24 10:29
441 查看
创建线程的第一种方式:继承Thread类 步骤: 1.定义类继承Thread; 2.复写Thread类中的run方法; 目的:将自定义代码存储在run方法,让线程运行。 3.调用线程的start方法, 该方法两个作用:启动线程,调用run方法。 创建线程的第二种方式:实现Runable接口 步骤: 1. 定义类实现Runnable接口; 2. 覆盖Runnable接口中的run方法,目的是将线程要运行的代码存放在该run方法中; 3. 通过Thread类建立线程对象; 4. 将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。 为什么要将Runnable接口的子类对象传递给Thread的构造函数? 因为自定义的run()方法所属的对象是实现Runnable接口的子类对象,所以让线程去指定对象的run方法,就必须明确该run方法所属对象。如果不通过参数 传递,直接使用默认的不带参数的构造方法,当调用start()方法时,启动的是父类Thread中的run()方法,该方法体为空,从而不能实现所需要的代码功能。 5. 调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。 --------------------------------------------------------------------------------------------------------------------------------- 实现Runnable接口方式和继承Thread类方式有什么区别呢? 实现方式好处:避免了单继承的局限性,该方法可以既有父类,又有实现多线程的功能,而继承Thread类的方式只能有一个Thread父类,不能有其他的往上抽象的父类,比如Student类继承了Person类,同时Student类要求实现多线程,此时只能通过实现Runnable接口的方式。 【注意】在定义线程时,建议使用实现方式。 两种方式区别: 继承Thread类: 线程代码存放Thread子类run方法中; 实现Runnable接口: 线程代码存在接口的子类的run方法。 --------------------------------------------------------------------------------------------------------------------------------- 继承方式实现多线程示例: 承方式实现多线程示例:
getName(): 获取线程名称。 如果Ticket类继承了Thread类,则也可以直接使用this.getName()获取当前线程对象,如果没有继承则不能直接使用getName()方法(此时Ticket类中中没有getName()方法),但是使用Thread.currentThread()方法为通用获取当前线程对象方法。
|
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java多线程系列--【基础篇02】- 常用的实现多线程的两种方式
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- 第2章 Java编程基础——FAQ2.16 在实现x和y相加时, x+=y和x=x+y两种实现方式有区别吗?
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- java多线程实现(thread和runnable接口两种方式以及其区别)
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中实现多线程的两种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中实现多线程的两种方式之间的区别
- Java实现多线程的两种方式比较及区别
- Java中有两种实现多线程的方式的区别
- Java中实现多线程的两种方式之间的区别
- Java基础知识总结之多线程的两种实现方式
- Java中有两种实现多线程的方式以及两种方式之间的区别