线程的四种创建方式

简介: 线程的四种创建方式

四种创建线程的方式:

  • 继承 Thread 类
  • 实现 Runnable 接口
  • 通过 ExecutorService 和 Callable<Class> 实现有返回值的线程
  • 基于线程池的execute(),创建临时线程

1 继承 Thread 类

Thread 类实现了 Runnable 接口并定义了操作线程的一些方法,我们可以通过创建类时继承 Thread类来创建一个线程。

具体实现:

(1)创建一个继承Thread的类ThreadDemo

(2)重新run()方法

调用步骤:

(1)创建ThreadDemo 类的对象t1

(2)执行t1.start() 方法来启动线程

//创建线程类
public class ThreadDemo extends Thread {
    //重写run()方法
    @Override
    public void run() {
        for(int i = 0;i<1000;i++) {
            System.out.println("Thread::"+i);
        }
    }
}
/***********************************************************************/
//调用线程
//创建线程对象
ThreadDemo t1 = new ThreadDemo();
//启动线程
t1.start();

run()方法中是线程的具体逻辑操作,

start()是一个native本地方法,通过操作系统启动一个线程。

2 实现 Runnable 接口

通过实现Runnable 接口来创建线程类 RThread,但是使用的时候,仍需要创建Thread 对象,把RThread的对象当成参数传入。

具体操作:

(1)实现Runnable 接口创建线程类 RThread

(2)重写run()方法

调用步骤:

(1)创建RThread 类的对象 rThread

(2)创建Thread类对象,并把rThread当成参数传入,相当于对rThread进行了封装。

(3)通过start()方法启动线程

//实现Runnable 接口创建线程类 RThread
public class RThread implements Runnable {
    @Override
    //重写run()方法
    public void run() {
        for(int i = 0;i<1000;i++) {
            System.out.println("Thread::"+i);
        }
    }
}
/***********************************************************************/
//调用线程
//创建RThread 类的对象 rThread
RThread rThread = new RThread();
//创建Thread类对象,并把rThread当成参数传入,相当于对rThread进行了封装。
Thread t2 = new Thread(rThread);
//通过start()方法启动线程
t2.start();



相关文章
|
SpringCloudAlibaba 负载均衡 Java
【一】SpringCloud Alibaba之Nacos整合篇(作为注册中心)
【一】SpringCloud Alibaba之Nacos整合篇(作为注册中心)
1178 1
【一】SpringCloud Alibaba之Nacos整合篇(作为注册中心)
|
运维 Java Nacos
nacos常见问题之读取不到配置文件如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
7920 2
|
负载均衡 Java 网络架构
在SpringCloud2023中快速集成SpringCloudGateway网关
本文主要简单介绍SpringCloud2023实战中SpringCoudGateway的搭建。后续的文章将会介绍在微服务中使用熔断Sentinel、鉴权OAuth2、SSO等技术。
773 2
在SpringCloud2023中快速集成SpringCloudGateway网关
|
安全
搞懂HashTable, HashMap, ConcurrentHashMap 的区别,看着一篇就足够了!!!
搞懂HashTable, HashMap, ConcurrentHashMap 的区别,看着一篇就足够了!!!
543 0
|
数据可视化 Java 数据安全/隐私保护
【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识(上)
【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识
694 0
|
Java Nacos 网络架构
SpringCloud Gateway的使用 + Nacos动态路由
SpringCloud Gateway的使用 + Nacos动态路由
|
SpringCloudAlibaba Dubbo 应用服务中间件
SpringCloudAlibaba篇(七)SpringCloud整合Zipkin分布式链路跟踪系统(SpringCloud+dubbo+Zipkin)
SpringCloudAlibaba篇(七)SpringCloud整合Zipkin分布式链路跟踪系统(SpringCloud+dubbo+Zipkin)
SpringCloudAlibaba篇(七)SpringCloud整合Zipkin分布式链路跟踪系统(SpringCloud+dubbo+Zipkin)
|
Java
java实现分布式锁
分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。
471 0
java实现分布式锁
|
存储 JSON 搜索推荐
Elasticsearch——核心概念 & 系统架构 & 集群中常见问题 & 路由计算 & 分片控制
Elasticsearch——核心概念 & 系统架构 & 集群中常见问题 & 路由计算 & 分片控制
Elasticsearch——核心概念 & 系统架构 & 集群中常见问题 & 路由计算 & 分片控制
|
JSON 监控 JavaScript
【springcloud合集】04:新建Moudle——微服务提供者支付模块
【springcloud合集】04:新建Moudle——微服务提供者支付模块
376 0
【springcloud合集】04:新建Moudle——微服务提供者支付模块