Java创建线程

article/2025/11/8 2:11:00

目录

既然说到线程,在这里就给大家普及一下线程。

线程(Thread):

那么,进程是什么呢?

接下来,就让我们步入主题:

在 Java 中,是这样说线程的:

创建一个新的执行线程有两种方法。 

第一种:创建一个类实现 Thread 类

 创建线程的第二种方式:使用 Thread(Runnable target) 构造方法,创建对象


既然说到线程,在这里就给大家普及一下线程。

🎇🎇🎇🎇🎇🎇🎇🎇

线程(Thread):

  • 是操作系统能够进行运算调度的最小单位。
  • 它被包含在进程之中,是进程中的实际运作单位。
  • 一个线程指的是进程中一个单一顺序的控制流。

🥂🥂🥂

其实:进程在我们计算机中我们随时都在使用:按住 Ctrl + shift + esc

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA546L5L2z5Lyf4pmq,size_16,color_FFFFFF,t_70,g_se,x_16

这个就是一个进程,在计算机中,线程就是进程中的一个执行单元。

那么,进程是什么呢?

进程:简简单单,我们日常中使用的QQ就是一个进程进程可以理解为就是一个软件,线程则就是这个软件中的一些功能,多个线程同时工作,才能使得进程工作。🤔🤔🤔。

使用官方的话来描述进程:

是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位。

接下来,就让我们步入主题:

⏰⏰⏰⏰⏰⏰⏰⏰⏰⏰⏰⏰⏰⏰⏰⏰⏰⏰⏰⏰

在 Java 中,是这样说线程的:

Java中,Thread类定义为:继承 了祖先类 Object ,实现了 Runable 接口。

public class Thread extends Object implements Runnable

线程是程序(进程)中执行的线程。

Java虚拟机允许应用程序同时执行多个执行线程。 


每个线程都有优先权。 具有较高优先级的线程优先于优先级较低的线程执行。 每个线程可能也可能不会被标记为守护程序。 当在某个线程中运行的代码创建一个新的Thread对象时,新线程的优先级最初设置为等于创建线程的优先级,并且当且仅当创建线程是守护进程时才是守护线程。 

当Java虚拟机启动时,通常有一个非守护进程线程(通常调用某些指定类的名为main的方法)。 Java虚拟机将继续执行线程,直到发生以下任一情况: 

已经调用了Runtime类的exit方法,并且安全管理器已经允许进行退出操作。 
所有不是守护进程线程的线程都已经死亡,无论是从调用返回到run方法还是抛出超出run方法的run 。 


创建一个新的执行线程有两种方法。 

第一种:创建一个类实现 Thread 类

package stu.my.cdn.creadthread.p1;/*** 创建线程的第一种方式:创建类,实现 Thread 方法*/
public class MyThread extends Thread {/*** run () 方法就是子线程要执行的代码*/@Overridepublic void run() {System.out.println("这是子线程打印的东西");}/*** 主线程 main*/public static void main(String [] args) {System.out.println("JVM 启动 main线程,main线程执行了main方法");// 创建子线程对象MyThread thread = new MyThread();// 启动线程----启动线程后,会自动执行自定义类中的 run 方法thread.start();System.out.println("mian 主线程执行结束");}
}

 以下是程序的输出结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA546L5L2z5Lyf4pmq,size_20,color_FFFFFF,t_70,g_se,x_16

这种程序执行分为三种方式:

串行:特殊的并行,程序排队执行,比较耗时,但安全。 

并发:一个程序执行,在等待阶段,下一个开始。

并行:简单粗暴,程序一起开始执行,一般效率高。

从硬件角度来说:如果是单核 CPU ,一个处理器一次只能执行一个线程的情况下,处理器可以使用时间片轮转技术,可以让 CPU 快速的在各个线程之间进行切换,对用户来说,感觉是三个线程在同时执行,如果是多核 CPU ,可以为不同的线程分配不同的 CPU 内核。

package stu.my.cdn.creadthread.p2;public class MyThread2 extends Thread{@Overridepublic void run() {// 处理异常快捷键 ,选中代码: Ctrl + Alt + Ttry {for(int i = 1; i <= 5; i++){System.out.println("子线程==>" + i);int time = (int) (Math.random() * 1000);Thread.sleep(time);     // 线程睡觉,单位是 毫秒, 1s = 1000ms}} catch (InterruptedException e) {e.printStackTrace();}}public static void main(String[] args) {MyThread2 myThread2 = new MyThread2();myThread2.start();      // 开启子线程try {for(int i = 1; i <= 5; i++){System.out.println("主线程main==>" + i);int time = (int) (Math.random() * 1000);Thread.sleep(time);     // 线程睡觉,单位是 毫秒, 1s = 1000ms}} catch (InterruptedException e) {e.printStackTrace();}}
}

 第一次执行顺序:

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA546L5L2z5Lyf4pmq,size_20,color_FFFFFF,t_70,g_se,x_16

第二次执行顺序 :

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA546L5L2z5Lyf4pmq,size_20,color_FFFFFF,t_70,g_se,x_16

fb528211efe249a6887c1003042963df.gif

 创建线程的第二种方式:使用 Thread(Runnable target) 构造方法,创建对象

如果已经类已经有了继承的父类,则第一种方式便不再使用这种情况,(因为在JAVA中一个类只能有一个父类):🤔🤔🤔🤔

 那我们便可以使用这种方式:实现接口,使用构造方法,创建线程:

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA546L5L2z5Lyf4pmq,size_17,color_FFFFFF,t_70,g_se,x_16

package stu.my.cdn.creadthread.p3;/*** 当线程已经有父类了,就不能继承 Thread 类的形式创建线程了,可以使用 Runnable 接口的形式*/
public class MyRunnable implements  Runnable{/*** 这里的 run 方法 就相当于我们日常中使用的 main 方法* 一旦 线程 start() 就会执行这个方法 */@Overridepublic void run() {for(int i = 0; i <= 5; i++){System.out.println("MyRunnable implements Runnable 's run method:" + i);}}public static void main(String[] args) {// 创建 Runnable 接口的实现类MyRunnable myRunnable = new MyRunnable();// 使用 Runnable 的 Thread(Runnable target) 方法,创建线程对象Thread thread = new Thread(myRunnable);// 开启线程thread.start();// main 线程for (int i = 1; i <= 5; i++){System.out.println("Runnable is main:" +i);;}// 使用匿名内部内实现Thread thread1 = new Thread(new Runnable() {@Overridepublic void run() {for(int i = 0; i < 5; i++){System.out.println("use anonymous interior class finished thread create :" + i);}}});// 开启 thread1thread1.start();}
}

 一样,线程每次并行执行,根据 CPU 核数的不同和允许执行线程的数量,利用对应的技术,在各个线程之间切换,提高执行的效率。

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA546L5L2z5Lyf4pmq,size_20,color_FFFFFF,t_70,g_se,x_16

 本期就到这里~~~

感谢大家阅读~~~68739b582cce4a7289d1d9dede0f0f48.gif


http://chatgpt.dhexx.cn/article/J0BA3kVK.shtml

相关文章

Java创建多线程的8种方式

目录 1、继承Thread类&#xff0c;重写run()方法 2、实现Runnable接口&#xff0c;重写run() 3、匿名内部类的方式 4、带返回值的线程(实现implements Callable<返回值类型>)————以上3种方式&#xff0c;都没有返回值且都无法抛出异常。 5、定时器(java.util.Timer)…

java如何创建线程

java如何创建线程 1. java如何创建线程1.1 通过继承Thread类来创建线程1.2 通过实现Runnable接口来创建线程1.3 通过匿名内部类来创建线程1.4 lambda表达式1.5 通过实现Runnable接口的方式创建线程目标类的优缺点 1. java如何创建线程 一个线程在Java中使用一个Thread实例来描…

Java多线程 - Java创建线程的4种方式

文章目录 1. Java创建线程有哪几种方式&#xff1f;1.1 线程创建方法一&#xff1a;继承Thread类创建线程类1.2 线程创建方法二&#xff1a;实现Runnable接口创建线程目标类1.5 线程创建方法三&#xff1a;使用Callable和FutureTask创建线程1.6 线程创建方法四&#xff1a;通过…

java创建线程的四种方式

1&#xff09;继承Thread类创建线程 如图所示: //继承Thread类 class Aclass extends Thread{//输出100以内的偶数Overridepublic void run() {for (int i 1; i <100; i) {System.out.println(getName()":"i);}} } 测试: Thread t1 new Aclass();t1.setName…

Java创建线程的七种方法,全网最全面总结~

目录 前言 一、继承Thread&#xff0c;重写run方法 二、实现Runnable接口&#xff0c;重写run方法 三、使用匿名内部类创建 Thread 子类对象 四、使用匿名内部类&#xff0c;实现Runnable接口 五、lambda表达式 六、实现Callable接口 七、使用线程池创建线程 前言 属于基…

java创建线程(Thread)的5种方式

java创建线程&#xff08;Thread&#xff09;的5种方式 方式一&#xff1a;继承于Thread类方式二&#xff1a;实现Runnable接口方式三&#xff1a;实现Callable接口方式四&#xff1a;使用线程池方式五&#xff1a;使用匿名类 方式一&#xff1a;继承于Thread类 步骤&#xff1…

前端开发与vscode开发工具介绍

文章目录 1、前端开发2、vscode安装和使用2.1、下载地址2.2、插件安装2.3、设置字体大小2.4、开启完整的Emmet语法支持2.5、创建项目2.6、保存工作区2.7、新建文件夹和网页 1、前端开发 前端工程师“Front-End-Developer”源自于美国。大约从2005年开始正式的前端工程师角色被…

IntelliJ IDE 插件开发指南

作者介绍 洪进锋&#xff0c;字节跳动后端研发工程师&#xff0c;参与过高并发系统&#xff08;百万QPS&#xff09;设计与研发工作。在开源项目方面混过 Sharding-JDBC 的 PR。个人开发的 IntelliJ IDE 插件 Redis Manager&#xff0c;目前在官方插件库中下载量 30K&#xff0…

真的要转到云IDE了吗?VS Code的开源IDE

云IDE产品介绍 云IDE使用教程 免费使用地址&#xff1a;点击【云IDE】&#xff0c;即可开始创建工作空间啦~ 前言 CSDN最新产品【云IDE】来啦&#xff01;【云IDE】将为各位技术er一键秒级构建云开发环境&#xff0c;提升开发效率&#xff01; 1. 什么是IDE&#xff1f; 做…

编辑器和IDE到底有什么区别呢?

其实很多接触了开发的工作人员都会接触以上 两种工具&#xff0c;编辑器&#xff0c;IDE。 其实我最刚开始的时候真的分不清&#xff0c;感觉都是开发的&#xff0c;上班以后呢慢慢就发现了两者的不同。 刚刚看知乎&#xff0c;发现一位哥们说话挺有意思的&#xff0c;比喻也…

初识Node.js之IDE的选择

其实就如同Java一样&#xff0c;Node可以选择的IDE不止一种&#xff0c;常见的比如webstorm&#xff0c;Visual Studio Code&#xff0c;其实都可以应付日常的工作需求&#xff0c;今天我要介绍的IDE&#xff0c;其实就是Visual Studio Code(接下来简称vs code)。怎么评价vs co…

【编辑器】VSCode的Web前端(html,css,JavaScript)开发环境打造

1、安装VScode和浏览器 VScode安装&#xff1a;https://code.visualstudio.com/ Chrome安装&#xff1a;https://www.google.com/intl/zh-CN/chrome/ node.js 安装&#xff1a;https://nodejs.org/zh-cn/download/ Web前端开发主要包括html&#xff0c;css&#xff0c;JavaScr…

IDE集成开发工具-IDEA(一)之IDE的概念

IDE的概念 集成开发环境&#xff08;IDE&#xff0c;Integrated Development Environment &#xff09;是用于提供程序开发环境的应用程序&#xff0c;一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开…

11个裸VSCode必备插件,助你打造一个前端开发IDE

VSCode 轻量、开源&#xff0c;新鲜下载的 VSCode 可谓是身无长物、一穷二白&#xff0c;连个项目管理的功能都没有。 身轻如燕的 VSCode 对于后端开发说可能有点幼稚&#xff0c;但对于前端来说刚刚好&#xff0c;毕竟不需要搞什么 Docker、数据库等等&#xff0c;装俩 VSCod…

「干货」前端开发者最常用的六款IDE

微信公众号&#xff1a;javafirst 一、Visual Studio Code 下载地址&#xff1a;https://code.visualstudio.com/ 功能介绍&#xff1a; 微软在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目&#xff1a;一个运行于 Mac OS X、Windows和 Linux 之上的…

IDEA使用前端基础

常用快捷键和快捷语句 CtrlShiftEnter&#xff1a;将输入的if、for、函数等等补上{}或者;使代码语句完整 CtrlAltT&#xff1a;将选中的代码使用if、while、try/catch等包装 Alt/&#xff1a;自动完成 AltEnter&#xff1a;自动提示完成 Ctrl/&#xff1a;使用//进行注释 Ctrl…

IDE的详细介绍

IDE&#xff08;集成开发环境&#xff09; 就是电脑上编程时用的应用&#xff0c;比如&#xff1a;visual studio&#xff08;如图&#xff09;&#xff0c; eclipse等。IDE一般包括&#xff1a;代码编辑器、编译器、调试器和图形用户界面等工具。IDE是集成了代码编写功能、分…

IDE等开发工具的使用(VSCODE + IDEA)

Mac下各按键对应含义 ⌥ ⌃⇧⌘→ / ← ↑ / ↓ 各种快捷键的组合场景 左ctrl 待定 左alt cmd 待定 左ctrl shift 待定 左ctrl cmd 待定 左shift cmd 待定 1.熟悉的Mac下的快捷键&#xff08;持续补充&#xff09; 附&#xff1a;Vscode KeyShortCut 功能 快捷键 功能…

【HBuilder】前端IDE神器

Hbulider目录 一、Hbulider简介1.1 Hbulider出身1.2 Hbulider特点 二、Hbulider安装2.1 Hbulider官网下载2.2 解压&#xff0c;发送快捷方式到桌面 三、Hbulider启动3.1 选择主题和快捷键方案 四、Hbulider使用4.1 失去焦点自动保存 一、Hbulider简介 1.1 Hbulider出身 HBuild…

前端vscode必备插件(强烈推荐)

目录 一、前言 二、工具推荐 1.《Chinese (Simplified) (简体中文) Language》 2.《ESLint》 3.《Git History》 4.vscode-icons 5.Path Intellisense 6.《Vetur》 7.《GitLens — Git supercharged》 8.《Image preview》 9.Debugger for Chrome 10.Prettier 11…