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

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接口方式,配合线程池使用,有更好的资源利用率和性能

原文地址:https://www.cnblogs.com/itall/p/12254669.html

时间: 2024-11-07 23:20:22

线程八大基础核心一(创建线程的方式)的相关文章

线程八大基础核心四(线程生命周期)

1.引子 在java多线程并发编程中,有八大基础核心.考考你:看看都有哪八大基础核心呢?它们分别是: 1.创建线程的方式 2.线程启动 3.线程停止 4.线程生命周期 5.线程相关的方法 6.线程相关的属性 7.线程异常处理 8.线程安全 今天我们从第四个基础核心开始:线程生命周期 2.考考你 #前情回顾: 在java编程语言中,从线程创建,到线程执行结束,会经过一系列状态的转化,称为线程的生命周期 #考考你: 1.你知道线程生命周期中有哪些状态吗? 2.你知道各种状态对应的含义吗? 3.一图胜

线程八大基础核心五(线程相关方法一)

1.引子 在java多线程并发编程中,有八大基础核心.考考你:看看都有哪八大基础核心呢?它们分别是: 1.创建线程的方式 2.线程启动 3.线程停止 4.线程生命周期 5.线程相关的方法 6.线程相关的属性 7.线程异常处理 8.线程安全 今天我们从第五个基础核心开始:线程相关方法 2.考考你 #前情回顾1.在java编程语言中,与线程相关的方法主要有: 1.1.Object.wait/Object.notify/Object/notifyAll 1.2.Thread.sleep/Thread.

线程八大基础核心六(线程属性)

1.引子 在java多线程并发编程中,有八大基础核心.考考你: 看看都有哪八大基础核心呢?它们分别是: 1.创建线程的方式 2.线程启动 3.线程停止 4.线程生命周期 5.线程相关的方法 6.线程相关的属性 7.线程异常处理 8.线程安全 今天我们从第六个基础核心开始:线程相关属性 2.考考你 #前情回顾 在我们日常多线程编程中,需要关心线程的线程优先级有: 线程Id 线程名称 是否是守护线程 线程优先级 #考考你 1.你知道线程Id的作用吗? 2.你知道线程名称的作用吗? 3.你知道什么是守

线程八大基础核心二(启动线程)

1.引子 在java多线程并发编程中,有八大基础核心.考考你:看看都有哪八大基础核心呢?它们分别是: 1.创建线程的方式 2.线程启动 3.线程停止 4.线程生命周期 5.线程相关的方法 6.线程相关的属性 7.线程异常处理 8.线程安全 今天我们从第二个基础核心开始:启动线程 2.考考你 #前情回顾: 1.在java编程语言中,创建好线程对象后,通过调用start方法,启动线程 Thread t1 = new Thread(); t1.start(); #考考你: 1.问题一:可以调用两次st

线程池ThreadPoolExecutor分析: 线程池是什么时候创建线程的,队列中的任务是什么时候取出来的?

带着几个问题进入源码分析: 线程池是什么时候创建线程的? 任务runnable task是先放到core到maxThread之间的线程,还是先放到队列? 队列中的任务是什么时候取出来的? 什么时候会触发reject策略? core到maxThread之间的线程什么时候会die? task抛出异常,线程池中这个work thread还能运行其他任务吗? 至少在new ThreadPoolExecutor()时,Thread对象并没有初始化. 这里仅仅指定了几个初始参数 一段基础代码,进入分析 pu

自定义线程池,如何最佳创建线程池

java有预置线程池:newSingleThreadExecutor,newFixedThreadPool,newCacheedThreadPool,newScheduledThreadPool,newWorkStealingPool.如果不适合,还可以使用ThreadPoolExecutor创建自定义线程池.主要构造方法: 1 public ThreadPoolExecutor(int corePoolSize, 2 int maximumPoolSize, 3 long keepAliveT

课时3 线程启动、结束,创建线程多法,join、detach

用类作为可调用对象创建线程 class A { public: A() { cout << "构造函数" << endl; } A(const A& a) { cout << "拷贝构造函数" << endl; } void operator()() { cout << "此时在子线程中" << endl; } ~A() { cout << "析

java基础(26):Thread、线程创建、线程池

1. 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程.一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序. 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 什么是多线程呢?即就是一个程序中有多个线程在同时执行.

7种创建线程方式,你知道几种?线程系列Thread(一)

前言 最近特别忙,博客就此荒芜,博主秉着哪里不熟悉就开始学习哪里的精神一直在分享着,有着扎实的基础才能写出茁壮的代码,有可能实现的逻辑有多种,但是心中必须有要有底哪个更适合,用着更好,否则则说明我们对这方面还比较薄弱,这个时候就得好好补补了,这样才能加快提升自身能力的步伐,接下来的时间会着重讲解线程方面的知识.强势分割线. 话题乱入,一到跳槽季节想必我们很多人就开始刷面试题,这种情况下大部分都能解决问题,但是这样的结果则是导致有可能企业招到并非合适的人,当然作为面试官的那些人们也懒得再去自己出一