java 实现多线程的3种方式

手把手入门YOLO到改进优化教程专栏介绍与说明——列表目录查阅(持续更新) 阅读详情

java 实现多线程的3种方式

1、第一种继承Thread类;

看jdk源码可以发现,Thread类其实是实现了Runnable接口的一个实例,继承Thread类后需要重写run方法并通过start方法启动线程。

继承Thread类耦合性太强了,因为java只能单继承,所以不利于扩展。

2、第二种实现Runnable接口;

通过实现Runnable接口并重写run方法,并把Runnable实例传给Thread对象,Thread的start方法调用run方法再通过调用Runnable实例的run方法启动线程。

所以如果主类继承了另外一个父类,此时要实现多线程就不能通过继承Thread的类实现;

3、第三种实现Callable接口;

通过实现Callable接口并重写call方法,并把Callable实例传给FutureTask对象,再把FutureTask对象传给Thread对象。它与Thread、Runnable最大的不同是Callable能返回一个异步处理的结果Future对象并能抛出异常,而其他两种不能。

 

代码如下:

package model;

import com.oracle.webservices.internal.api.databinding.DatabindingMode;

/**
 * Author: trunk
 * Date: 2021/2/9 15:00
 * Describe: teacher类
 */
public class Teacher {

    private String name;
    private int age;


    public Teacher(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString(){
        return "name="+name+",age="+age;
    }
}
import model.Teacher;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

/**
 * Author: trunk
 * Date: 2021/2/9 14:50
 * Describe:实现多线程的3种方式
 */
public class Asyn {

    public static void main(String[] args) throws Exception{

        //第一种
        Thread t1 = new Thread1();
        //第二种
        Thread t2 = new Thread(new Thread2());
        //第三种
        FutureTask<Teacher> ft = new FutureTask<>(new Thread3());
        Thread t3 = new Thread(ft);


        t1.start();
        t2.start();
        t3.start();

        System.out.println(ft.get());
    }

    static class Thread1 extends Thread {

        @Override
        public void run() {
            System.out.println("First extends Thread");
        }
    }

    static class Thread2 implements Runnable {
        @Override
        public void run() {
            System.out.println("Second implements Runnable");
        }
    }
    static class Thread3<T> implements Callable<T>{

        @Override
        public T call() throws Exception {
            System.out.println("Three implements Callable");
            return (T)new Teacher("name",32);
        }
    }
}

 

MCU-内部flash模拟成EepRom(重新梳理) 通过fee写数据Data的过程中,数据会mapping一个虚拟地址,这个虚拟地址就是你的身份,在向flash写数据的过程中会写入很多相同虚拟地址的不同数据,在读取或切页的过程中,遍历数据只会认为最下面第一个的虚拟地址所持有的数据是有效数据,其他的都是老数据,可以丢弃。模拟成eeprom的两个eep_page写数据逻辑就是,先在eep_page0写数据,eep_page0写满后,将eep_page0的有效数据copy到eep_page1,之后擦eep_page0; 阅读详情

相关推荐

SAP系统从ECC升级至S/4 HANA的实现路径及项目过程

从SAP ECC升级到 S/4 HANA,通常是一个复杂的转型过程,涉及到企业资源规划系统的全面现代化

saplakes的博客 2904

Java多线程三种实现方法

多线程指单个进程(程序)可以并行执行多个线程,在同一时间执行多个线程以提高程序的处理能力和运行效率,并有利于更好地运用系统资源。提示:以下是本篇文章正文内容,下面案例可供参考。

Iurzy的博客 1843

Spring Boot 3.2 集成 Shiro 2.0.1 踩坑实录:从 javax.servlet 到 jakarta.servlet 的完整迁移指南

本文详细介绍了Spring Boot 3.2集成Shiro 2.0.1时遇到的从javax.servlet到jakarta.servlet的迁移问题,提供了完整的解决方案和迁移指南。通过Maven依赖配置和代码调整,帮助开发者顺利跨越Jakarta EE的兼容性鸿沟,确保Shiro权限控制在Spring Boot 3.2环境中正常运行。

weixin_42570296的博客 484

Java实现多线程的三种方式

Java实现多线程的三种方式。

LIAO哥的博客 572

[附源码]计算机毕业设计Python财务管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程项目运行环境配置:Pychram社区版+py项目技术:django + python+ Vue 等等组成,B/S模式 +pychram管理等等。环境需要1.运行环境:最好是python3.7.7,我们在这个版本上开发的。其他版本理论上也可以。2.pycharm环境:pycharm都可以。推荐pycharm社区版;3.mysql环境:建议是用5.7版本均可。

巧灵计算机程序设计 1067

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

Time_1023的博客 1873

Java 多线程实现的三种方式

Java 多线程实现的三种方式

crg18438610577的博客 1819

解锁笔记智能对话:手把手配置 Obsidian Copilot 插件与硅基流动模型

本文详细介绍了如何为Obsidian笔记软件配置Copilot插件,并接入硅基流动AI模型,从而为个人知识库添加智能对话能力。通过手把手教程,指导用户完成插件安装、API Key获取、模型配置及索引构建,最终实现基于个人笔记内容的深度语义问答,提升知识管理效率。

corn8的博客 613

JAVA多线程实现的三种方式

1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。 2.继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnabl.........

luckyZQC的博客 1294

PX4从放弃到精通(二十七):固定翼姿态控制

固件版本 PX4 1.13.2欢迎交流学习,可加左侧名片。

超维空间科技的博客 6889

30天入门 SAP BTP 开发系列之七:动手在 SAP BTP 上开发第一个 ABAP 程序

本教程从理论转向实践,指导如何在SAP BTP上创建首个ABAP程序。首先通过Booster向导在Trial账号中配置ABAP环境,需确保已启用Cloud Foundry并创建Space。成功创建ABAP实例后,使用ABAP Development Tool连接环境:下载服务密钥文件,导入工具获取连接URL,即可建立项目开始编码。教程提供了从环境搭建到开发工具配置的完整流程,帮助ABAP开发者快速上手BTP云开发。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1680

java中实现多线程的三种方式

实现多线程的方法

Mao_yafeng的博客 1万+

大数据领域数据采集的人工智能辅助技术

在大数据时代,“数据是石油”的隐喻早已深入人心,但采集高质量数据的过程却像“在大海里捞针”——数据源分散如繁星、格式杂乱如碎片、质量参差不齐如泥沙,传统采集方法(写死的脚本、固定的ETL流程)早已力不从心。这篇文章将带你走进AI辅助数据采集的世界:我们会用“智能捕鱼船”的比喻拆解AI如何解决传统采集的痛点,深入解析“数据源自动发现”“自适应数据解析”“实时质量管控”等核心技术的原理,用代码示例还原AI采集的真实流程,最后探讨多模态采集、联邦学习等未来趋势。

小程序开发 2355

Java之多线程的实现(创建)(3种实现方式)(面试高频)

本篇博客主要是关于Java的多线程的创建与实现。主要提到了三种实现方式——继承Thread类,重写Thread类的run()方法、实现Runnable接口,run()方法中实现多线程、实现Callable接口,重写call()方法。其中使用Future接口的实现类获取call()方法返回的结果。其实就是线程结果处理类“FutureTask”的有参构造方法封装Callable接口的实现类...

岁岁岁平安的博客 2078

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

多线程的实现方式_来聊一聊3种实现JAVA多线程的方式吧

在Java中,实现多线程的方式有3种,分别是继承Thread类、实现Runnable接口、实现Callable接口。关于它们是如何实现,有何区别呢?方式一:继承Thread类一个普通类只要继承了传说中的Thread类,那么,这个普通类就具备了多线程操作能力。But,这个普通类必须重写Thread类中的run()方法,因为我们所编写的代码要放在这个方法中,而且所编写的代码是一个线程体。通过继承Thr...

weixin_39801356的博客 224

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java多线程的3种实现方式

目录 1.继承Thread类 2.实现Runnable接口 3.实现Callable接口 接下来的几篇文章记录一下java高并发编程的一些知识,包括实现多线程的3种方式,线程同步的常用方式以及实现线程池的常用工具类等等,本篇先介绍用3种方式实现多线程。 1.继承Thread类 定义一个类直接继承Thread类,重写run方法即可实现多线程,但是由于java单继承的特点,那么此类不能再继承其它的类。 代码示例: package com.kongsh.c_00; /** * @ClassN

每天进步一点点 777

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Java多线程的3种实现方式

Java 语言提供了 3 种实现多线程的方式,继承 Thread 类、实现 Runnable 接口、使用 Callable 接口和 Future 接口。

qq_40875747的博客 318

3种java实现多线程_实现java多线程的3种方式,99%人没用过第3种

实现多线程的3种方式1、继承Thread类看jdk源码可以发现,Thread类其实是实现了Runnable接口的一个实例,继承Thread类后需要重写run方法并通过start方法启动线程。继承Thread类耦合性太强了,因为java只能单继承,所以不利于扩展。2、实现Runnable接口通过实现Runnable接口并重写run方法,并把Runnable实例传给Thread对象,Thread的st...

weixin_36221948的博客 77

JAVA多线程实现的3种方式

JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。 1、继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的

水木轩昊昊 367

Java多线程3种实现方式

1、继承Thread类 package demo; public class FirstThread extends Thread{ private String name; // 定义name属性 public FirstThread(String name) { this.name = name; } public void run()

程裕强的专栏 453

实现java多线程的3种方式

1、继承Thread类 看jdk源码可以发现,Thread类其实是实现了Runnable接口的一个实例,继承Thread类后需要重写run方法并通过start方法启动线程。 继承Thread类耦合性太强了,因为java只能单继承,所以不利于扩展。 2、实现Runnable接口 通过实现Runnable接口并重写run方法,并把Runnable实例传给Thread对象,Thread的s...

54Kayden的博客 267

java多线程3种实现方式

java多线程的实现方式 1.继承Thread类重写run()方法 public class JavaThread01 extends Thread { @Override public void run() { System.out.println("Hello Thread01"); } public static void ma...

有信仰的蜗牛 250

3种java实现多线程_JAVA多线程实现的三种方式

JAVA多线程实现JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。前两种大家应该都熟悉,第三种不太常用,但有时面试时会问到所以我在这里写下。继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线...

weixin_34024555的博客 135

java多线程问题,实现现成的3种方式

本文主要讲java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的线程函数用法、概述等。首先让我们来了解下在操作系统中进程和线程的区别:   进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位)   线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线...

能让你写代码●写出拯救全世界的感觉 1388

java的3种实现方式开启多线程

多线程相关的问题 1.什么是进程? ​ 正在执行的程序 2.什么是线程? ​ 进程的子单位,一个能够完成独立功能的执行路径 3.为什么需要开启多线程? 当执行某些耗时操作的任务的时候需要开启多线程,防止线程阻塞 能够让两个任务看起来像是在同时执行 提高CPU的使用率,进而提高进程和内存的使用率 4.为什么开启多线程会同时执行? ​ 因为CPU切换执行的速度太快了,肉眼无法差距 5...

小熙的进化史 412
上一篇: java Thread的start和run方法的区别
下一篇: java 线程池全面解析
jilanting
博客等级 码龄14年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值