<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{@Overridepublic 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(){@Overridepublic 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{@Overridepublic 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() {@Overridepublic 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 的常见方法和属性》

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进程间通信——system V共享内存、共享内存的概念、共享内存函数、system V消息队列、信号量

文章目录 进程间通信1.system V共享内存1.1共享内存原理1.2共享内存数据结构1.3共享内存函数 2.system V消息队列2.1消息队列原理 3.system V信号量3.1信号量原理3.2进程互斥 4.共享内存的使用示例 进程间通信 1.system V共享内存 1.1共享内存原理 共享内存区是最快的IPC形式…

2018年1月22日 Go生态洞察:Hello, 中国!

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

罗技M590鼠标usb优联连接不上

手里有一个罗技M590鼠标从18年4月一直用到现在,质量很好,除了滚轮有些松别的没毛病。最近一台笔记本电脑办公不太够用,又领了一个台式机,就想到M590支持双模连接,并且支持Flow,就把usb优联接收器从电池仓拿…

球面的表面积

此推导需要用到重积分的知识,另外关于曲面的面积公式可以看我之前的博客

[架构之路-251]:目标系统 - 设计方法 - 软件工程 - 软件建模 - 什么是建模,什么是软件系统建模?软件系统阶段性建模?正向建模与反向建模?

目录 前言: 一、什么是建模 1.1 什么是建模 1.2 常见的建模的方式与种类 二、什么是软件系统建模 2.1 软件系统建模的概念 2.2 软件系统常见的三种建模方法和手段 2.3 软件系统建模的常见工具 三、软件系统阶段性建模 3.1 软件工程在不同阶段对软件系统进…

【JavaEE初阶】浅谈进程

✏️✏️✏️今天正式进入JavaEE初阶的学习,给大家分享一下关于进程的一些基础知识。了解这部分内容,只是为后续多线程编程打好基础,因此进程部分的知识,不需要了解更加细节的内容。 清风的CSDN博客 😛😛&a…

蓝桥杯每日一题2023.11.24

题目描述 #include <stdio.h> #define N 100int connected(int* m, int p, int q) {return m[p]m[q]? 1 : 0; }void link(int* m, int p, int q) {int i;if(connected(m,p,q)) return;int pID m[p];int qID m[q];for(i0; i<N; i) ________________________________…

杂货铺 | Windows系统上解压缩tgz文件

文章目录 &#x1f4da;快速终端打开实现 & 解压缩实现步骤&#x1f4da;环境变量的一般配置步骤 & 问题解决思路 &#x1f4da;快速终端打开实现 & 解压缩实现步骤 将对应的tgz文件放入对应的文件夹。快速在指定文件夹下打开终端 打开对应的路径 双击地址栏 然后…

Harmony开发 eTs公共样式抽取

Harmony系统开发使用eTs开发过程中对于样式相同且重复使用的样式可以抽取成公共样式循环利用&#xff0c;类似于android的style样式。 import router from ohos.router import cryptoFramework from ohos.security.cryptoFramework; import prompt from system.prompt class L…

2018年2月16日 Go生态洞察:Go 1.10版本发布分析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

【教学类-06-12】20231126 (一)如何让加减乘除题目从小到大排序(以1-20之间加法为例,做正序排列用)

结果展示 优化后 优化前 背景需求&#xff1a; 生成列表 单独抽取显示题目排序方法 存在问题: 我希望 00 01 02……这样排序&#xff0c;但是实际上&#xff0c;除了第一个加数会从小到大排序&#xff0c;第二个被加数的第十位数和个位数都会从小到大排序&#xff0c;也就是…

express中间件

1.中间件的格式 Express的中间件&#xff0c;本质上就是一个 function 处理函数&#xff0c;Express中间件的格式如下: 注意:中间件函数的形参列表中&#xff0c;必须包合 next 参数。而路由处理函数中只包含 req 和 res。 // 常量 mw 所指向的&#xff0c;就是一个中间件函数…