java 使用匿名内部类的方式创建线程并设置和获取线程名字

2023-11-20

有些方法需要传入接口的实例或者抽象类的实例对象,比如Thread有一个构造方法,Thread(Runnable target)

这时可以可以自定义类实现Runnable接口,重写接口中的方法,将自定义类的对象传入构造方法中

也可以使用匿名内部类,即在创建Thread对象时传入Runnable接口,在其后面重写接口的方法

这篇文章介绍下使用匿名内部类创建三个线程

package createThreads;

import java.util.concurrent.*;

public class anoymousThreadTest01 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //使用匿名内部类创建Thread对象,1
        new Thread(){
            @Override
            public void run() {
               System.out.println("hello world 1");
            }
        }.start();
        //2
        Thread t1=new Thread(){
            @Override
            public void run() {
                System.out.println( "hello world 2");
            }
        };
        t1.start();
        //使用匿名内部类创建Runnable接口实例,创建线程1
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println( "你好,世界 2");
            }
        }).start();
        //2
        Thread t2=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println( "你好,世界 2");
            }
        });
        t2.start();
        //使用匿名内部类创建Callable接口实例,创建线程
        ExecutorService es= Executors.newFixedThreadPool(2);//创建线程池
        Future<Integer> f=es.submit(new Callable<Integer>() { //创建Callable接口实例,重写call方法,放入线程池
            @Override
            public Integer call() {
                return 3*5;
            }
        });
        System.out.println( f.get());      //输出返回的结果
        es.shutdown();                      //关闭线程池
    }
}
out:
你好,世界 2
hello world 1
你好,世界 2
hello world 2
15

获取名字和设置名字的三种方式,以Thread为例,获取当前线程对象可以试用Thread类的静态方法currentThread()

public class anoymousThreadTest02 {
    public static void main(String[] args){
        //设置线程名字,1利用Thread类的setName方法
        Thread t1=new Thread(){
            @Override
            public void run() {
                System.out.println( "线程t1的名字是: "+this.getName());
            }
        };
        t1.setName("线程t1");
        //2,在Thread类的构造方法中传入名字
        Thread t2=new Thread("线程t2"){
            @Override
            public void run() {
                System.out.println( "线程t2的名字是: "+getName());
            }
        };
        //3,在run方法体中使用Thread类的setName方法
        Thread t3=new Thread(){
            @Override
            public void run() {
                this.setName("线程t3");
                System.out.println( "线程t3的名字是: "+this.getName());
            }
        };
        t3.start();
        t1.start();
        t2.start();

        //  获取当前线程对象,利用Thread中的currentThread方法
        //Runnable接口中的run方法无法直接利用getName方法,可先获取当前对象,再利用Thread类的getName方法获取当前线程名字
        Thread t4=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println( "线程t4的名字是: "+Thread.currentThread().getName());
            }
        },"线程t4");
        t4.start();
        //不设置线程名字,系统会默认为线程命名
        Thread t5=new Thread(){
            @Override
            public void run() {
                System.out.println( "线程t5的名字是: "+getName());
            }
        };
        t5.start();
        //设置main方法的线程名字并打印
        Thread.currentThread().setName("main方法");
        System.out.println( "main方法的线程名字是: "+Thread.currentThread().getName());
        
    }
}

参考:http://www.monkey1024.com/javase/658

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 使用匿名内部类的方式创建线程并设置和获取线程名字 的相关文章

  • Java接口详解

    一 static静态关键字 定义变量不加static关键字 每个对象单独保存一个变量 定义变量加static关键字 静态变量 类变量 共享变量 public static 数据类型 变量名 所有对象会共享该变量 如果一个变量 静态变量 类变
  • java热部署

    Class forName和ClassLoader loadClass 简书 Eclipse安装热部署热加载插件JRebel 免费版 idea也可用 that summer CSDN博客 Eclipse中使用JRebel实现项目热部署 Ma
  • instanceof,isInstance,isAssignableFrom的区别,以及isAssignableFrom()详解

    一 isAssignableFrom详解 这个方法我觉得是不好理解 感觉命名不对劲 不知道是不是错觉 Class类的isAssignableFrom Class cls 方法 如果调用这个方法的class或接口 与 参数cls表示的类或接口
  • JAVA-面向对象

    面向对象编程与面向过程编程只是一种在思维方式上的划分 面向过程是以分步骤的方式解决问题 而面向对象是以分步骤的方式解决问题 面向对象的三大特性是 封装 继承 多态 封装 就是将客观事物封装成抽象的类 抽象类可以将自己的数据和方法只让自己信任
  • win下查看 MySQL 数据文件存储位置

    一 在 MySQL 客户端输入以下命令 show global variables like datadir mysql数据文件存储位置定位如下图所示 二 直接到C盘路径下查找 如果查找不到 将隐藏的文件夹显示即可 另外附带 查看mysql
  • Java异常(超详细!)

    1 什么是异常 java提供异常处理机制有什么用 什么是异常 程序执行过程中的不正常情况 异常的作用 增强程序的 健壮性 eg public class ExceptionTest01 public static void main Str
  • 【JAVA】接口与多态

    接口 定义 接口用关键字interface定义 public interface 接口名 特点 接口不能实例化 创建对象 接口和类之间是实现关系 通过implements关键字表示 public class 类名 implements 接口
  • jquery循环语句if-else if-else

    jquery循环语句if else if else callbackFun 函数 开始是写的if if else 结果是不管第一个if有没有匹配到 会再次判断 如果匹配到第二个if 则第二个if中的语句执行 没有匹配到第二个if 则else
  • Java-进制转换

    常用的进制转换 十进制转二进制 二进制转十进制 十进制转八进制 八进制转十进制 十进制转十六进制 十六进制转十进制 如果二 八 十六之间想转换可以通过十进制做中间者 import java util Scanner import java
  • 值传递与引用传递的区别

    一 值传递 是指在调用函数时将实际参数复制一份传递到函数中 这样在函数中如果对参数进行修改 将不会影响到实际参数 代码在内存中的执行流程 1 首先加载main方法 2 接下来int number 100 3 输出调用前的number 结果为
  • TCP通信发送和接收数据(Socket、ServerSocket)、TCP通信案例

    目录 TCP TCP发送接收数据 发送数据 Socket 接收数据 ServerSocket TCP通信案例1 TCP接收数据后给出反馈案例2 TCP接收数据后给出反馈案例3 TCP接收数据后给出反馈案例4 TCP 概述 TCP通信协议是一
  • 多态(polymorphic)

    目录 1 多态的基本介绍 2 多态实现条件 3 重写 重写的介绍 重写和重载的区别 动 静态绑定机制 5 向上转型和向下转型 向上转型 向上转型的特点 总结 向下转型 多态的优缺点 多态是Java三大基本特征中最抽象也是最重要的特征 多态是
  • jmeter实战案例

    一 前言 以前做了个抽奖活动的需求 需要做压测 只是简单帮助测试去做过压测 但没有自己从头到尾做过 最近再次碰到需要做压测 百度了一下使用教程 现在做个记录 以便以后做压测 直接借鉴教程 二 流程 1 启动jmeter 下载jmeter后
  • Java多态

    关于引用的进一步理解 交换值 因为Java方法在传递参数的时候都是值传递 那么如何通过方法实现2个数的值交换 明确 在传引用的时候 到底拿引用干了个啥 class Value public int a public class Test p
  • Java面向对象——图书管理系统(小白也能看的懂!)

    文章目录 一 功能介绍 二 JAVA面向对象思想 包的分装 1 book包 2 user包 较复杂 3 operation包 接口包 三 代码框架的搭建 1 book包 Book类 2 book包 BookList类 3 operation
  • Java字符串分析器

    package StruingTokenizer import java util StringTokenizer public class StringTokenizer public static void main String ar
  • Junit单元测试

    概念 JUnit是一个 Java 编程语言的单元测试工具 可以对部分代码的进行测试 Junit是用于Java的单元测试的框架 是别人写好的 特点 JUnit是一个开放源代码的测试工具 提供注解来识别测试方法 JUnit测试可以让你编写代码更
  • java Socket 简单实现客户端与服务器间通信(仿聊天室)

    java Socket TCP协议简单实现客户端与服务器间的通信 打赏 执行效果 启动服务器和3个客户端 进行群聊和私聊 执行过程 服务端 首先创建服务器套接字ServerSocket对象并绑定端口 启动服务器 然后ServerSocket
  • Object&Objects

    Object 概念 Object 是类层次结构的根 每个类都可以将 Object 作为超类 所有类都直接或者间接的继承自该类 换句话说 该类所具备的方法 所有类都会有一份 toString 作用 以良好的格式 更方便的展示对象中的属性值 重
  • private static final Long serialVersionUID= 1L详解

    我们知道在对数据进行传输时 需要将其进行序列化 在Java中实现序列化的方式也很简单 可以直接通过实现Serializable接口 但是我们经常也会看到下面接这一行代码 private static final Long serialVer

随机推荐

  • 2022VLMo: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts

    摘要 我们提出了一个统一的视觉 语言预训练模型 VLMo 该模型与一个模块化的transformer网络共同学习一个双编码器和一个融合编码器 具体地 我们引入了模态混合专家 MoME Transformer 其中每个块包含一个特定于模态的专
  • tensorRT部署之 代码实现 onnx转engine/trt模型

    tensorRT部署之 代码实现 onnx转engine trt模型 前提已经装好显卡驱动 cuda cudnn 以及tensorRT 下面将给出Python C 两种转换方式 1 C 实现 项目属性配置好CUDA tensoeRT库 通常
  • 吴恩达机器学习笔记系列(五)——梯度下降

    一 gradient descent 梯度下降 1 概念 线性回归的目的就是找出使得误差 损失函数 最小的参数值 可以用梯度下降来确定 参数的大小 梯度下降是一种迭代方法 能够求解局部最小值 结果与初始点的选取有关 为了找到最小值 从某一点
  • ADFS 4.0 证书更新

    ADFS 4 0 证书更新 由于公网证书的过期 需要重新更新ADFS的服务通信证书 证书要求 带私钥 PFX格式 更换流程 证书安装到 证书 计算机 个人 安装后点开证书能看到 你有一个与证书对应的私钥 右击证书 gt 所有任务 gt 管理
  • 【uboot内核适配学习】uboot 修改默认ip

    1 修改默认ip作用 设备出场的时候都需要默认的ip 2 修改措施 找到uboot芯片配置文件 不同芯片厂家适配的文件必定是不一样的 位置也可能不一样 define CONFIG ETHADDR 00 40 5c 26 0a 5b MAC地
  • 面经——小米面经(2021春招)

    摘自 小米面经 2021春招 感谢小米 感谢雷总 感谢上官可编程 作者 阿波罗啦啦啦啦 发布时间 2021 05 01 11 08 41 网址 https blog csdn net weixin 44933419 article deta
  • 博客营销

    1 博客营销有什么价值 应注意什么 1 博客可以直接带来潜在用户 2 博客营销的价值体现在降低网站推广费用方面 3 博客文章内容为用户通过搜索引擎获取信息提供了机会 4 博客文章可以方便地增加企业网站的链接数量 5 可以实现更低的成本对读者
  • 指标体系建设

    1 背景 结合业务场景将多个不同指标和维度进行组合 从而针对某一真实业务场景进行数据分析和决策导向 并能在整体业务变化中发现和定位问题 2 概念理解与示例分析 2 1 指标体系 指标体系 名称 分类 解析 作用 示例 指标 结果型指标 时机
  • 汉诺塔问题 java

    汉诺塔问题 public class HanoiTower 编写一个main方法 public static void main String args Tower t1 new Tower t1 move 5 A B C 汉诺塔问题的解决
  • React事件处理及事件流

    React事件处理 React事件处理是通过将事件处理器绑定到组建上处理事件 事件触发的同时更新组建的内部状态 内部状态更新会触发组件的重绘 React 元素的事件处理和 DOM 元素的事件处理很相似 但语法上的略有区别 在React中事件
  • 如何删除gitee仓库下的文件

    有时我们可能在上传项目到github或者gitee时 忘记忽略了某个文件 就直接push上去了 最后发现上传多了 如何删除掉远程仓库中的文件呢 注 在github上我们只能删除仓库 无法删除文件夹或文件 所以只能通过命令 2 打开GitBa
  • Python 程序设计习题(4) —— 列表与元组

    目录 1 Python 习题部分 2 Python 习题讲解 列表 元组 其他 1 Python 习题部分 要想学习一门语言 便少不了练习 故附上部分 Python 习题 供大家学习参考 如有错误之处 还望指正 1 二年级一班举行了数学考试
  • springboot项目中application.properties无法变成小树叶问题解决

    1 检查我们的resources目录的状态 看看是不是处在普通文件夹的状态 如果是的话 我们需要重新mark一下 右键点击文件夹 选择mark directory as resources root 此时我们发现配置文件变成了小树叶 2 如
  • ScheduledThreadPoolExecutor周期定时任务异常处理踩坑的问题!!

    问题原因 在公司写项目的时候 有一个周期定时任务的需求 就想着阿里巴巴开发手册里不是说不能用Executors去创建线程池 因为存在如下问题 FixedThreadPool和SingleThreadPool 允许的请求队列长度为 Integ
  • NVME Format Command 个人笔记

    Format NVM command NVM Command Set Specific This command is used by the host to change the LBA data size and or metadata
  • 【图像压缩】QOI图像格式详解

    最近听说一种图像格式比较流行 想起我曾经是做图像压缩的emmmm 就来研究一下 QOI Quite OK Image Format 很好的图像格式 git链接 能快速地无损压缩图像 原理也非常简单 没有各种变换 直接空域处理 而无损压缩 自
  • linux入门系列20--Web服务之LNMP架构实战

    作为本入门系列最后一篇文章 将演示如何在CentOS7环境下搭建LNMP环境来构建个人博客网站 常见搭建网站的方式有LAMP LNMP IIS Nginx Tomcat等等 本文演示比较流行的基于LNMP方式来搭建动态WEB网站 正如前文
  • VScode配置C++(win11)以及Vscode的一些使用问题

    目录 一 下载VScode 省略 二 下载编译器 mingw 三 配置 vscode 四 补充 配置好后 输出中文会乱码 五 文件参数讲解 六 多文件编译 修改task json 七 中文问题 一 下载VScode 省略 二 下载编译器 m
  • 测试设计提升之路

    当前软件行业中有很多职位 其中开发与测试可以说是TOP2热门 测试相对开发来说入门容易 但要快速达到巅峰 我们需要掌握一些方法与套路 测试工作是一个繁琐的工作 一个人的精气神有限 在规定的时间内需要掌握多种技术 而且要达到精通非常困难 就测
  • java 使用匿名内部类的方式创建线程并设置和获取线程名字

    有些方法需要传入接口的实例或者抽象类的实例对象 比如Thread有一个构造方法 Thread Runnable target 这时可以可以自定义类实现Runnable接口 重写接口中的方法 将自定义类的对象传入构造方法中 也可以使用匿名内部