【Java EE初阶】创建线程的五种方式

news2024/11/25 2:22:28

文章目录

  • 1. 继承Tread,重写run()
  • 2. 实现Runnable接口,重写run()
  • 3. 使用匿名内部类,继承Thread
  • 4. 使用匿名内部类,实现Runnable
  • 5. 使用lambda表达式


1. 继承Tread,重写run()

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

 class MyTread extends Thread {
    public void run() {
        while (true) {
            System.out.println("hello thread");

            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

    public class thread{
        public static void main(String[] args) {
            Thread t = new MyTread();
            t.start();
            while(true){
                System.out.println("hello world");
                try {
                    Thread.sleep(3000);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        }
    }

执行结果如下
在这里插入图片描述
如下图,有main,t两个线程
线程执行顺序是抢占式,开始之后,只有前两条结果是固定的,之后的顺序由操作系统控制,不可预测。
t.start();创建了一个新的线程,之后新的线程调用run()方法,打印“hello thread”。
run()方法执行完毕后,线程销毁。

2. 实现Runnable接口,重写run()

class MyRunnable implements Runnable{
    public void run(){
        while(true){
            System.out.println("hello runnable");
            try{
                Thread.sleep(2000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }
        }
    }
}
public class UseRunnable{
    public static void main(String[] args) {
        Runnable r = new MyRunnable();
        Thread t = new Thread(r);
        t.start();
        while(true){
            System.out.println("hello main");
            try{
                Thread.sleep(2000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }
        }
    }
}

执行结果如下
在这里插入图片描述
Thread t = new Thread(r),由线程t去完成r的任务,即执行run()方法。

3. 使用匿名内部类,继承Thread

public class InnerRunnable {
    public static void main(String[] args) {
        Thread t = new Thread(){
            public void run(){
                while(true){
                    System.out.println("hello thread");
                    try{
                        Thread.sleep(2000);
                    }catch(InterruptedException e){
                        e.printStackTrace();
                    }
                }
            }
        };
        t.start();
        while (true){
            System.out.println("hello main");
            try{
                Thread.sleep(2000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }
        }
    }
}

4. 使用匿名内部类,实现Runnable

public class InnerRunnable {
    public static void main(String[] args) {
        Thread t = new Thread(new Runnable(){
            public void run(){
                while(true){
                    System.out.println("hello runnable");
                    try{
                        Thread.sleep(2000);
                    }catch(InterruptedException e){
                        e.printStackTrace();
                    }
                }
            }
        });
        t.start();
        while(true){
            System.out.println("hello main");
            try{
                Thread.sleep(2000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }
        }
    }
}

在这里插入图片描述

5. 使用lambda表达式

lambda指的是匿名函数

public class Lambda {
    public static void main(String[] args) {
        Thread t = new Thread(() ->{
            while(true){
                System.out.println("hello lambda");
                try{
                    Thread.sleep(2000);
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
        });
        t.start();
        while(true){
            System.out.println("hello main");
            try{
                Thread.sleep(2000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }
        }
    }
}

在这里插入图片描述

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

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

相关文章

Kafka系列之:使用Kafka Manager实现leader分区平衡和broker节点上分区平衡

Kafka系列之:使用Kafka Manager实现leader分区平衡和broker节点上分区平衡 一、需求背景二、leader分区不平衡三、实现leader分区不平衡四、分区在节点不平衡五、实现分区在节点平衡一、需求背景 kafka节点扩容,分区不平衡现在需要leader分区平均分配在每个节点上同时分区副本…

基于Python+Django的项目申报审核平台系统

在各学校的教学过程中,django项目校内申报平台系统是一项非常重要的事情。随着计算机多媒体技术的发展和网络的普及。采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的django高校学生项目校内申报平台&#xf…

OMV 5.6入坑指南(一)-openmediavalut 5.6安装

一、DIY NAS服务器 百度网盘里攒了一堆电影、电视剧,想下载到电脑里,买了个4T硬盘,然后发现不够用,然后又买了个还是不够用,然后自己又不想开电脑看电视电影,平时看电视电影都是在ipad上看的,台…

可视化管线

VTK中的可视化管线可用于读取或创建数据、分析和创建此数据的派生版本,并将数据写入磁盘或将其传递给渲染引擎进行显示。例如,您可以从磁盘读取一个三维数据体,对其进行处理以创建一组三角形,这些三角形通过该数据体表示一个等值曲…

全栈Jmeter接口测试(六):json断言元件,jmeter参数化实现

Jmeter(12):json断言元件 json断言元件介绍: json断言元件与响应断言元件的功能类型,它只针对响应正文为json数据格 式的内容进行断言功能。 添加路径:右击http请求——断言——json断言 如下图展示: json断言元件字…

JAVA毕业设计——基于SpringBoot和thymeleaf的疫情信息管理系统 (源码+数据库)

github代码地址 https://github.com/ynwynw/CoronavirusManage-public 毕业设计所有选题地址 https://github.com/ynwynw/allProject 基于SpringBoot及thymeleaf搭建的疫情信息管理系统 (源码数据库)034 一、系统介绍 疫情信息管理系统应当具备两种对象,疫情管理…

【论文精读10】MVSNet系列论文详解-PatchmatchNet

PatchmatchNet,论文名为:PatchmatchNet: Learned Multi-View Patchmatch Stereo,本篇论文结合了较多过往文章的优化思想和类似模块,因此可能要更复杂一些。 本文是MVSNet系列的第10篇,建议看过【论文精读1】MVSNet系列…

【嵌入式linux】修改网口MAC地址

使用带有网络功能的设备时,如果局域网内可能会连接很多台设备,为了保证网络通信正常,要确保每台设备的硬件MAC地址都不相同,一般在批量生产的时候可以根据产品序列号(sn号)固化每台设备的MAC地址,防止出现MAC冲突的问题…

【云原生】Prometheus PromQL讲解与实战操作

文章目录一、PromQL介绍二、四种指标类型1)counter(计数器)2)gauge (仪表类型)3)Histogram(直方图类型) 和 Summary(摘要类型)三、表达式四种数据…

8Manage PMO:多项目管理工作经验分享

在现代企业日常项目管理中,同时开展不同业务项目可说已经是“家常便饭”,项目经理手上开展多个项目,便需要兼顾各项目的人力资源、进度、问题、风险等。而在这种情况下,面对多项目管理该如何有效进行管理,有没有多项目…

换天空的几个方式技巧

1.魔棒工具 现将图层复制一层,用魔棒工具选中被复制的一层图中的天空将他删除。(如果天空有一些未选中的位置,那么我们按住shift用鼠标去点击需要删除的位置他就会一起选中) 这个就是我们删除之后的效果。 然后我们打开一张需要加…

体验了一下火爆全球的 ChatGPT,我震惊了

这几天,要说编程圈最热的话题,莫过于OpenAI的ChatGPT,写小说,写代码,找BUG,写论文,画漫画,谱曲……简直没有它干不了的事。 趁着下班时间,我也光速注册体验了一下&#…

VS Code 1.74 发布!

欢迎来到 VS Code 11月更新,此版本更新包括自定义资源管理器自动显示、隐藏活动栏和面板徽章、合并编辑器撤消/重做、管理不安全的存储库、Go to Definition on return、远程隧道等等,让我们一起看看完整更新吧! 自定义资源管理器自动显示 引…

Linux Centos离线地图开发

相关教程: 1、如何搭建离线地图开发环境 视频教程 2、下载离线地图数据(金字塔瓦片数据) 视频教程 3、下载离线地图地形数据库(实现地表高低起伏) 4、添加离线地图数据到本地服务器 (含3D) 视频…

NamedParameterJdbcTemplate —— SqlParameterSource实现具名参数查询

文章目录NamedParameterJdbcTemplate —— SqlParameterSource实现具名参数查询一、数据库准备二、java Bean实体类准备三、要执行的SQL语句四、定义业务接口service五、定义一个SqlParameterSource实现具名参数的实体类六、定义controller接口七、业务实现(1&#…

基于java+springboot+mybatis+vue+mysql的疫苗接种管理系统

项目介绍 该系统的应用可以减少工作人员的劳动强度,提高工作效率与管理水平,具有很大的价值。它可以使疫苗接种管理系统上操作简单,成功率高,使网上疫苗接种管理系统的管理向一个更高层次前进。 本系统尝试使用springboot在网上…

动态规划及马尔可夫特性最佳调度策略(Matlab完整代码实现)

📋📋📋本文目录如下:⛳️⛳️⛳️ 目录 1 概述 2 Matlab代码实现 3 写在最后 1 概述 动态规划是一种机器学习方法,它利用环境、计算资源和马尔可夫特性等知识来创建在环境中最佳执行的策略。有了这项强大的技术&#…

存储器层次结构

实际的软件开发过程中,常会遇到服务端请求响应时间长,吞吐率不够。 分析对应问题时,你肯定听过“主要瓶颈不在CPU,而在I/O”,存储很重要。 1 存储器的层次结构 存储器系统是通过各种不同方法和设备,一层层…

人肝HepG2细胞膜

人肝HepG2细胞膜 主要组成:细胞膜组分(真核或原代细胞)、高分子内核材料、功能因子 制备方法:薄膜包覆法 粒径控制:100-150 nm 平均电位:~ -20 mV 包载因子:影像分子、免疫分子等功能因子 包装…

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175)

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2151 权值计算2. MT2152 黑客小码哥3. MT2153 来给单…