<JavaEE> 线程的五种创建方法 和 查看线程的两种方式

目录

一、线程的创建方法

1.1 继承 Thread -> 重写 run 方法

1.2 使用匿名内部类 -> 继承 Thread -> 重写 run 方法

1.3 实现 Runnable 接口 -> 重写 run 方法

1.4 使用匿名内部类 -> 实现 Runnable 接口 -> 重写 run 方法

1.5 使用 lambda 表达式

二、查看线程的方法

2.1 jconsole 工具

2.2 IDEA Debug 调试器


一、线程的创建方法

以下分别介绍五种线程的创建方法

1继承 Thread -> 重写 run 方法
2使用匿名内部类 -> 继承 Thread -> 重写 run 方法
3实现 Runnable 接口 -> 重写 run 方法
4使用匿名内部类 -> 实现 Runnable 接口 -> 重写 run 方法
5使用 lambda 表达式

        这五种创建方式都是等价的。

1.1 继承 Thread -> 重写 run 方法

//1.创建自己的线程类并继承Thread;
//2.重写run方法;
//3.创建Thread实例;
//4.运行MyThread线程;
class MyThread extends Thread{
    @Override
    public void run() {
        while (true){
            System.out.println("MyThread!");
        }
    }
}
public class Thread_Demo1 {
    public static void main(String[] args) {
        Thread thread = new MyThread();
        thread.start();

        while (true){
            System.out.println("main!");
        }
    }
}

1.2 使用匿名内部类 -> 继承 Thread -> 重写 run 方法

//1.以匿名内部类的方式创建一个继承于Thread的子类,重写run方法;
//2.变量名thread指向这个子类的实例;
//3.启动线程thread;
public class Thread_Demo3 {
    public static void main(String[] args) {
        Thread thread = new Thread(){
            @Override
            public void run() {
                while (true){
                    System.out.println("MyThread!");
                }
            }
        };
        thread.start();

        while (true){
            System.out.println("main!");
        }
    }
}

1.3 实现 Runnable 接口 -> 重写 run 方法

//1.创建一个类,实现Runnable接口;
//2.重写run方法;
//3.实现Runnable接口的子类实例化;
//4.将runnable作为参数,构造Thread类实例;
//5.启动线程thread;
class MyThread implements Runnable{
    @Override
    public void run() {
        while (true){
            System.out.println("MyThread!");
        }
    }
}
public class Tread_Demo2 {
    public static void main(String[] args) {
        Runnable runnable = new MyThread();
        Thread thread = new Thread(runnable);
        thread.start();

        while (true){
            System.out.println("main!");
        }
    }
}

1.4 使用匿名内部类 -> 实现 Runnable 接口 -> 重写 run 方法

//1.以匿名内部类的方式创建一个实现了runnable接口的类,重写run方法;
//2.把这个实现类作为Thread的构造方法的参数,创建Thread对象;
//3.启动线程thread;
public class Thread_Demo4 {
    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                    System.out.println("MyThread!");
                }
            }
        });

        while (true){
            System.out.println("main!");
        }
    }
}

1.5 使用 lambda 表达式

//1.使用lambda表达式作为参数构造Thread实例;
//2.重新写run方法,这里的run方法是一个匿名函数;
//3.启动线程thread;
public class Thread_Demo5 {
    public static void main(String[] args) {
        Thread thread = new Thread(()-> {
            while (true){
                System.out.println("MyThread!");
            }
        });
        thread.start();

        while (true){
            System.out.println("main!");
        }
    }
}

二、查看线程的方法

以下介绍两种查看线程的方法:

1通过JDK自带工具 jconsole 查看
2通过 IDEA Debug调试器 查看

        查看线程时,必须保证线程是在运行中的。

2.1 jconsole 工具

找到 jconsole 工具:

jconsole 工具的路径:在JDK安装路径下的bin文件夹下。
如何找到JDK:确保已经安装过JDK,在命令行窗口中输入:java -verbose 后,输出的的第一行就包含了路径:

打开 jconsole 工具:

使用管理员权限下打开,否则打开后选项可能为空白。
找到本地进程中的Java进程。
进程的名字通常由包名+类名组成,是程序员自己取的名字,双击进入。

找到线程选项卡,查看线程:

2.2 IDEA Debug 调试器


阅读指针 -> 《线程类 Thread 的常见方法和属性》

链接生成中.........

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Self Distillation 自蒸馏论文解读

paper:Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self Distillation official implementation: https://github.com/luanyunteng/pytorch-be-your-own-teacher 前言 知识蒸馏作为一种流行的压缩方法&#…

五种多目标优化算法(MOGWO、MOLPB、MOJS、NSGA3、MOPSO)求解微电网多目标优化调度(MATLAB代码)

一、多目标优化算法简介 (1)多目标灰狼优化算法MOGWO 多目标应用:基于多目标灰狼优化算法MOGWO求解微电网多目标优化调度(MATLAB代码)-CSDN博客 (2)多目标学习者行为优化算法MOLPB 多目标学习…

ps5ps4游戏室如何计时?计费系统怎么查看游戏时间以及收费如何管理

ps5ps4游戏室如何计时?计费系统怎么查看游戏时间以及收费如何管理 1、ps5ps4游戏室如何计时? 下图以佳易王计时计费软件V17.9为例说明 在开始计时的时候,只需点 开始计时按钮,那么开台时间和使用的时间长度项目显示在屏幕上&am…

如何判断一个题目用“贪心/动态规划“还是用“BFS/DFS”方法解决

1 总结 1.1 贪心、动态规划和BFS/DFS题解的关系 一般能使用贪心、动态规划解决一个问题时,使用BFS,DFS也能解决这个题,但是反之不能成立。 1.2 2 贪心 -> BFS/DFS 2.1 跳跃游戏1和3的异同 这两道题,“跳跃游戏”&#xf…

靡靡之音 天籁之声 ——Adobe Audition

上一期讲到了和Pr配合使用的字幕插件Arctime Pro的相关介绍。相信还记得的小伙伴应该记得我还提到过一个软件叫做Au。 当人们对字幕需求的逐渐满足,我们便开始追求更高层次的享受,当视觉享受在进步,听觉享受想必也不能被落下! Au即…

Flutter桌面应用开发之毛玻璃效果

目录 效果实现方案依赖库支持平台实现步骤注意事项话题扩展 毛玻璃效果:毛玻璃效果是一种模糊化的视觉效果,常用于图像处理和界面设计中。它可以通过在图像或界面元素上应用高斯模糊来实现。使用毛玻璃效果可以增加图像或界面元素的柔和感,同…

一、深入简出串口(USRT)通信——基本概念。

一、前言 串口到底是什么?简单来说一句话就可以解释,串口就是一种通信协议。 看到这里可能大家会觉得你这不是放屁么,说了跟没说一样。所以这里做前言来描述,大家要先对通信协议有一个下意识地认识才能在学习串口的时候不至于迷茫…

spring循环依赖

Bean的生命周期 这里不会对Bean的生命周期进行详细的描述,只描述一下大概的过程。 Bean的生命周期指的就是:在Spring中,Bean是如何生成的? 被Spring管理的对象叫做Bean。Bean的生成步骤如下: Spring扫描class得到Bean…

yolo系列中的一些评价指标说明

文章目录 一. 混淆矩阵二. 准确度(Accuracy)三. 精确度(Precision)四. 召回率(Recall)五. F1-score六. P-R曲线七. AP八. mAP九. mAP0.5十. mAP[0.5:0.95] 一. 混淆矩阵 TP (True positives):被正确地划分为正例的个数,即实际为正例且被分类器划分为正例…

计算机编程基础教程,中文编程工具下载,编程构件组合按钮

计算机编程基础教程,中文编程工具下载,编程构件组合按钮 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件&#xff0c…

人力资源管理后台 === 登陆+主页灵鉴权

目录 1. 分析登录流程 2. Vuex中用户模块的实现 3.Vue-cli代理解决跨域 4.axios封装 5.环境区分 6. 登录联调 7.主页权限验证-鉴权 1. 分析登录流程 传统思路都是登录校验通过之后,直接调用接口,获取token之后,跳转到主页。 vue-elemen…

C++二分查找:统计点对的数目

本题其它解法 C双指针算法:统计点对的数目 本周推荐阅读 C二分算法:得到子序列的最少操作次数 本文涉及的基础知识点 二分查找算法合集 题目 给你一个无向图,无向图由整数 n ,表示图中节点的数目,和 edges 组成…

HTTP状态码:如何修复 404 Not Found错误?

互联网上各种类型的网站非常多,无论用户还是网站运营者不可避免的会遇到404 Not Found错误,如果遇到404错误,我们应该如何解决呢? 对于用户 检查拼写错误 如果您是遇到错误的用户,请仔细检查 URL 是否有任何拼写错误…

【Flutter 常见问题系列 第 1 篇】Text组件 文字的对齐、数字和字母对齐中文

TextStyle中设置height参数即可 对齐的效果 Text的高度 是根据 height 乘于 fontSize 进行计算的、这里指定heiht即可、不指定的会出现 无法对齐的情况,如下: 这种就是无法对齐的情况

决策树(第四周)

一、决策树基本原理 如下图所示,是一个用来辨别是否是猫的二分类器。输入值有三个(x1,x2,x3)(耳朵形状,脸形状,胡须),其中x1{尖的,圆的}&#xf…

R语言实现Lasso回归

一、Lasso回归 Lasso 回归(Least Absolute Shrinkage and Selection Operator Regression)是一种用于线性回归和特征选择的统计方法。它在回归问题中加入了L1正则化项,有助于解决多重共线性(多个特征高度相关)和特征选…

什么是轻量应用服务器?可以从亚马逊云科技的优势入手了解

什么是轻量应用服务器? 随着如今各行各业对云计算的需求越来越多,云服务器也被越来越多的企业所广泛采用。其中,轻量应用服务器是一种简单、高效、可靠的云计算服务,能够为开发人员、企业和个人提供轻量级的虚拟专用服务器&#x…

【深入剖析K8s】容器技术基础(一):从进程开始说起

容器其实是一种特殊的进程而已。 可执行镜像 为了能够让这些代码正常运行’我们往往还要给它提供数据’比如我们这个加法程序所需要的输人文件这些数据加上代码本身的二进制文件放在磁盘上’就是我们平常所说的一个程序,也叫代码的可执行镜像(executablejmage&…

PostgreSQL+patroni+etcd+haproxy+keepalived高可用

PostgreSQLpatronietcdhaproxykeepalived 高可用架构 部署环境 部署postgresql-15 一主二从: role主机组件主库 node203 192.168.56.203 pg15.5 Patroni、Etcd,haproxy、keepalived 从库 node204 192.168.56.204 pg15.5 Patroni、Etcd,ha…

机器人开发的选择

喷涂机器人 码垛机器人 纸箱码垛机器人 焊接机器人 跳舞机器人 管道清理机器人 工地巡检机器人 点餐机器人 化工巡检机器人 装箱机器人 安防巡检机器人 迎宾机器人好像有点像软银那个 污水管道检测机器人 大酒店用扫地机器人 家用扫地机器人 工厂用(…