线程入门java

news2025/2/24 17:37:53

1:线程创建方式二 

让子类继承Thead类

必须重写Thead类的run方法

写多态的写法

 注意优缺点 线程已经Thread  无法继承其他类

package threadTest;

public class ThreadTest1 {
    //目标:掌握线程的创建方式继承thread类
    public static void main(String[] args) {
        //3:创建MyThead线程类的对象代表一个线程
        //写多态的写法
        Thread t=new MyThead();
        //启动线程(自动执行run方法)
        t.start();  //main线程 t 线程
        //t.run(); 会出现bug
        for (int i = 1; i <= 5; i++) {
            System.out.println("主线程main输出"+i);
        }
    }
}
public class MyThead extends Thread {
    //1:让子类继承Thead继承

    //2:必须重写Thead类的run方法
    @Override
    public void run() {

        for (int i = 1; i <= 5; i++) {
            System.out.println("子类线程MyThead输出:"+i);

        }
    }
}

2:线程创建方式二 

优点:任务类只是实现接口,

可以继续继承其他类、实现其他接口,扩展性强

实现类Runnable接口

重写run方法

注意 线程对象和任务对象 不一样

把任务对象交给一个线程对象处理

        //1:定义一个任务 实现Runnable 接口
public class MyRunnable implements Runnable {
        //2:重写Runnable的run方法
            @Override
            public void run() {

                for (int i = 0; i < 5; i++) {
                    System.out.println("Runnable子线程输出:=" + i);
                }
            }
        }

            // 掌握多线程的创建方式二 实现类Runnable接口
public class ThreadTest2 {
    public static void main(String[] args) {
        //3:创建任务对象
       Runnable target= new MyRunnable();
       //4:把任务对象交给一个线程对象处理

        // 构造器 public Thread(Runnable target)
        new Thread(target).start();
     //  t.start();
        for (int i = 0; i < 5; i++) {
            System.out.println("主程main输出:=" + i);

        }

    }
}

 2_2:线程创建方式二 

匿名内部类写法

Lambda表达式  代码简化

package threadTest;


            // 掌握多线程的创建方式二 (ni)匿名内部类写法
public class ThreadTest2_2 {
    public static void main(String[] args) {
        //1:创建Runnable 接口的匿名内部类形式(任务对象)
        Runnable target =new Runnable() {
            @Override
            public void run() {
                for (int i = 1; i <=5 ; i++) {
                    System.out.println("子线程1匿名内部类:" + i);
                }
            }
        };

       new Thread(target).start();

       //简化形式1;
        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.println("子线2程匿名内部类:" + i);
                }
            }
        } ).start();

        //简化形式2;
        new Thread(()-> {
                for (int i = 1; i <= 5; i++) {
                    System.out.println("子线3程匿名内部类:" + i);
                }

        } ).start();



        for (int i = 1; i <=5 ; i++) {
            System.out.println("主线程main输出:" + i);
        }
    }
}

注意   前两种线程创建方式都存在的一个问题
假如线程执行完毕后有一些数据需要返回,他们重写的run方法均不能直接返回结果
 

解决方法

DK 5.0提供了Callable接口和FutureTask类来实现(多线程的第三种创建方式)

这种方式最大的优点 :可以返回线程执行完毕以后的结果

3线程创建方式三 

  •   多线程的第三种创建方式:利用 Callab 接口 FuturTask 类库来实现
  •   创建 任务
  • 定义一个类实现Callable接口 重写call方法
  • 封装要做的事情 和要返回的数据
  • 把Callable 类型的对象封装成FutureTask(线程任务对象)
  • 把线程任务交给Thread对象
  • 调用Thread对象的start方法启动线程
  • 线程执行完毕后 通过FutureTask对象的get 方法 去获取线程任务执行的结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1088047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】 网络入侵检测

前言 网络安全检测是网络安全的重要组成部分。它可以帮助我们发现潜在的威胁&#xff0c;防止攻击者的入侵。在这一章节中&#xff0c;我们将详细介绍网络入侵检测&#xff0c;包括入侵检测系统&#xff08;IDS&#xff09;和入侵防御系统&#xff08;IPS&#xff09;&#xf…

java JUC并发编程 第九章 对象内存布局与对象头

系列文章目录 第一章 java JUC并发编程 Future: link 第二章 java JUC并发编程 多线程锁: link 第三章 java JUC并发编程 中断机制: link 第四章 java JUC并发编程 java内存模型JMM: link 第五章 java JUC并发编程 volatile与JMM: link 第六章 java JUC并发编程 CAS: link 第七…

上市一年,市值惨跌八成!大模型救不了智云健康

大数据产业创新服务媒体 ——聚焦数据 改变商业 2022年7月&#xff0c;一站式慢病管理和智慧医疗平台智云健康正式在港交所挂牌上市&#xff0c;发行价30.50港元&#xff0c;对应市值近180亿港元。一年之后&#xff0c;智云健康股价徘徊在6港元左右&#xff0c;对应市值不足40…

【docker - 安装】windows 10 专业版 安装docker,以及 WSL kernel version too low 解决方案

一、开启 Hyper-V 二、下载 docker 三、安装 docker 四、问题 Stage 1&#xff1a;打开 powershell&#xff0c;并执行 Stage 2&#xff1a;下载Linux内核更新包&#xff0c;并安装 Stage 3&#xff1a;将 WSL 2 设置为默认版本 Stage 4&#xff1a;安装所选的 Linux 分…

HarmonyOS应用开发者基础认证【满分答案】

HarmonyOS应用开发者基础认证 一、判断题二、单选题三、多选题 一、判断题 在Column和Row容器组件中&#xff0c;justifyContent用于设置子组件在主轴方向上的对齐格式&#xff0c;alignItems用于设置子组件在交叉轴方向上的对齐格式。&#xff08;正确&#xff09; 所有使用C…

数学基础

线性代数 关键词&#xff1a;线性方程组、矩阵、增广矩阵&#xff08;系数矩阵、常数项矩阵&#xff09;、阶梯型矩阵、行最简矩阵、最简形矩阵、向量系统、向量加法、向量空间、基本单位向量、线性相关、线性无关、Span张成空间、 向量乘法&#xff08;点积、内积、外积、叉积…

易云维®产业电商APP提供适合楼宇自动化应用的HMD/W80系列温湿度传感器资料介绍

维萨拉INTERCAP湿度与温度变送器系列HMD/W80可用于各种楼宇自动化应用中相对湿度与温度的测量。变送器安装简便&#xff0c;工作可靠&#xff0c;并且对维护要求很低。 HMD/W80系列变送器功能全面&#xff0c;包含墙面安装型、管道安装型以及适用于潮湿环境的IP65防护等级变送器…

智能安防监控如何助力汽车4S店信息化精细化管理?最大程度做到降本增效?

汽车4S店做为重要的消费场所&#xff0c;需要给用户提供一个安全舒适的购车环境&#xff0c;另外&#xff0c;很多展车在展厅展示时&#xff0c;容易发生意外&#xff0c;而加大安保人员数量的做法&#xff0c;会提高成本投入&#xff0c;而使用智能视频监控即可解决此类问题&a…

leetcode刷题日记-2.

leetcode第二题 1. 题目2. 参考代码&#xff1a;3. 代码解释 1. 题目 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和…

如何建立企业数字化营销体系?使用数字化营销系统助企业升级?

如何建立企业数字化营销体系&#xff1f;需要从以下几个方面进行考虑和实施&#xff1a; 1. 营销团队的组建。想要更好地开展数字化营销体系的落地&#xff0c;就需要有一个好的数字化落地团队&#xff0c;这个团队不仅具备数字化营销技能和知识&#xff0c;包括对数字分析、数…

课题学习(六)----安装误差校准、实验方法

一、 安装误差校准 1.1 数学模型 在实际情况下&#xff0c;即使努力尝试使三轴加速度计和三轴磁通门正交&#xff0c;也不可能保证坐标轴的正交和安装的准确居中。无论采用何种解法&#xff0c;都会导致最终解的误差。因此&#xff0c;要想提高测量精度&#xff0c;就必须开发…

在Rastion rose中建包并添加类

1、新建包 2、向包中添加类 方法1&#xff1a;在"浏览器"中将已经存在的类拖到包中 方法2&#xff1a;在"浏览器"中新建类 方法&#xff1a;右击包名->new->class 3、设置类在包中的可见性 方法&#xff1a;在浏览器中双击类&#xff0…

【广州华锐互动】VR高层火灾应急疏散演练提供一种无风险的逃生体验

在科技进步的今天&#xff0c;我们已经能够利用虚拟现实&#xff08;VR&#xff09;技术来模拟各种紧急情况&#xff0c;其中就包括高楼火灾逃生。VR高层火灾应急疏散演练系统是一种新兴的技术&#xff0c;它使用虚拟现实环境来模拟高楼火灾的实际情况&#xff0c;为人们提供一…

为什么B2B企业需要CRM系统?如何利用它最大化销售额?

身处 B2B 企业&#xff0c;你是否正在为冗长复杂的销售流程而苦恼&#xff1f;你是否经常感到无法控制来之不易的销售线索&#xff0c;所有的营销努力都付诸东流&#xff1f; 实际上&#xff0c;这些问题正是大多数 B2B 企业面临的共同挑战。但是&#xff0c;为你的B2B业务采用…

UE4和C++ 开发--HUD类

HUD 平视显示器(Head Up Display),简称HUD。在蓝图中是指在屏幕上面绘制的二维物体。 1. 创建HUD 打开蓝图编辑器&#xff0c;创建一个蓝图类&#xff0c;搜索HUD&#xff0c;选择并命名BP_HUD。 2. 开始绘制 打开事件列表&#xff0c;右键搜索 EventReceive Draw HUD。有两…

AP5125 DC-DC降压恒流IC SOT23-6 过认证 9-100V 6A电源驱动线路图

1,产品描述 AP5125 是一款外围电路简单的 Buck 型平均电 流检测模式的 LED 恒流驱动器&#xff0c;适用于 8-100V 电压 范围的非隔离式大功率恒流 LED 驱动领域。芯片采用 固定频率 140kHz 的 PWM 工作模式&#xff0c; 利用平均电 流检测模式&#xff0c;因此具有优异的负载…

【运维笔记】linux同步时间

问题描述 电脑挂机一天&#xff0c;linux时间突然不同步了&#xff0c;需要同步时间 简单直接 systemctl restart ntpd.service &#xff08;其实还有其他很多方法&#xff0c;我先记录这一种&#xff09; 查看时间 timedate 同步前&#xff1a; 同步后

用python 实现采集百度热搜

文章目录 前言用python 实现采集百度热搜1. 实现demo 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xff0c;那欢迎常…

【数据结构与算法】链表的分割

需求分析&#xff1a; 将链表分为两个部分在X前是小于X的&#xff0c;在X后是大于X的。只需要分割不需要排序。 实现思路&#xff1a; 通过从头节点开始遍历&#xff0c;判断小于X的放入一条链表种&#xff0c;大于X的放入另一个链表中&#xff0c;最后将两条链表相连&#xff…