欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 实现多线程的两种方式

程序员文章站 2022-04-26 14:45:54
文章目录oracle官方文档创建线程的方式代码示例实现Runnable接口方式创建线程继承Thread类 方式创建线程两种实现多线程方式的对比两种实现多线程方式的本质oracle官方文档创建线程的方式根据oracle的官方文档如下, 创建线程的方式只有两种.实现Runnable接口继承Thread类代码示例实现Runnable接口方式创建线程public class RunnableStyle implements Runnable { public static voi...



oracle官方文档创建线程的方式

根据oracle的官方文档如下, 创建线程的方式只有两种.

  • 实现Runnable接口
  • 继承Thread类

Java 实现多线程的两种方式
Java 实现多线程的两种方式

代码示例

实现Runnable接口方式创建线程

public class RunnableStyle implements Runnable { public static void main(String[] args) { Thread thread = new Thread(new RunnableStyle()); thread.start(); System.out.println(Thread.currentThread().getName()+ "  main线程打印"); } @Override public void run() { System.out.println(Thread.currentThread().getName()+ "   实现Runnable接口创建线程"); } } 

控制台打印如下
Java 实现多线程的两种方式

继承Thread类 方式创建线程

package com.thread.createthread; /**
 * 类名称:ThreadStyle
 * 类描述:TODO
 *
 * @author: https://javaweixin6.blog.csdn.net/
 * 创建时间:2020/8/15 20:05
 * Version 1.0
 */ public class ThreadStyle extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getName()+ "   继承thread类 创建线程"); } public static void main(String[] args) { new ThreadStyle().start(); System.out.println(Thread.currentThread().getName()+ "  main线程打印"); } } 

控制台打印如下
Java 实现多线程的两种方式

两种实现多线程方式的对比

  1. 从解除耦合的角度, 实现Runnable接口方式创建线程更好
  2. 如果用继承Thread类 方式创建线程 , 每次想要新创建一个任务, 只能新建立一个线程, 而新创建一个线程的损耗是比较大的. 而用Runnable , 可以使用线程池的方式来创建线程, 减少了线程创建和销毁的损耗. 节约了资源
  3. 由于Java是支持多实现, 而只支持单一继承的, 因此使用实现Runnable接口的方式也更好 .

两种实现多线程方式的本质

  • 实现Runnable接口方式 最终是调用target.run();
    Java 实现多线程的两种方式
    而target 就是Runnable 接口
    Java 实现多线程的两种方式
    使用实现Runnable 接口 创建线程的方式,是会在构造方法的时候传入, 在后续的过程中被初始化. 如下图的Thread源码所示
    Java 实现多线程的两种方式
    Java 实现多线程的两种方式
  • 继承Thread类 方式是整个run()被重写
    方法二是直接子类重写了父类的方法, 一旦子类重写了父类的方法, 那么父类的run方法就会被抛弃掉.
    Java 实现多线程的两种方式

本文地址:https://blog.csdn.net/qq_33229669/article/details/108027438