• 线程八大基础核心一(创建线程的方式)


    1.引子

      在java多线程并发编程中,有八大基础核心。考考你:看看都有哪八大基础核心呢?它们分别是:
      1.创建线程的方式
      2.线程启动
      3.线程停止
      4.线程生命周期
      5.线程相关的方法
      6.线程相关的属性
      7.线程异常处理
      8.线程安全

      今天我们从第一个基础核心开始:创建线程的方式

    2.考考你

    #考考你:
    你知道在java编程语言中,有几种创建线程的方式吗?

    #参考如下:网友说法、官方文档

    网友说法:

     官方文档说法:

    #说法比较:
    在网络上,关于创建线程的方式。主流的说法有四种:继承Thread、实现Runnable、线程池、Callable与Future

    在官方文档,关于创建线程的方式。有且仅有两种:继承Thread、实现Runnable

    #答案:
    在java编程语言中,创建线程的方式,我们以官方文档为准,只有两种。关于说线程池、Callable与Future是项目开发中常用的方式,它们的底层其实还是Runnable。

    3.继承Thread

     1 package com.anan.thread.createthread;
     2 
     3 public class ThreadDemo {
     4 
     5     public static void main(String[] args) {
     6         // 创建线程对象,并启动
     7         Thread t1 = new MyThread();
     8         t1.start();
     9     }
    10 }
    11 
    12 /**
    13  * 继承Thread方式,创建线程
    14  */
    15 class MyThread extends Thread{
    16 
    17     @Override
    18     public void run() {
    19         System.out.println("继承Thread方式,创建线程");
    20     }
    21 }

    执行结果:

    4.实现Runnable

     1 package com.anan.thread.createthread;
     2 
     3 public class RunnableDemo {
     4 
     5     public static void main(String[] args) {
     6         // 创建线程对象,并启动
     7         Runnable r1 = new MyRunnable();
     8         Thread t1 = new Thread(r1);
     9         
    10         t1.start();
    11 
    12     }
    13 }
    14 
    15 /**
    16  * 实现Runnable接口,创建线程
    17  */
    18 class MyRunnable implements Runnable{
    19 
    20     public void run() {
    21         System.out.println("实现Runnable接口,创建线程");
    22     }
    23 }

    执行结果:

    5.讨论分享

    #实际开发中,哪一种创建线程的方式更好?
    1.虽然在java编程语言中,有两种创建线程的方式:继承Thread、实现Runnable
    2.在实际开发中,推荐使用实现Runnable接口方式,原因有:
      2.1.实现Runnable接口方式,可以将线程处理业务,与创建线程分离,从而解耦
      2.2.实现Runnable接口方式,扩展性更好,因为在java编程语言中,只能继承一个父类,而可以实现多个接口
      2.3.实现Runnable接口方式,配合线程池使用,有更好的资源利用率和性能

  • 相关阅读:
    3)小案例三,加乐前端入口index.php
    C语言中传值和C++的传引用
    2)小案例步骤2,添加工厂类
    1)小案例步骤一
    1)public,provite和protect不能放在函数函数头
    88)PHP,PDOStatement对象
    NET 中system.IO(Stream) 的学习笔记二
    c#中的char byte string 类型之间的转换
    字符集和字符编码(Charset & Encoding)
    c#window服务程序
  • 原文地址:https://www.cnblogs.com/itall/p/12254669.html
Copyright © 2020-2023  润新知