Java 语法学习笔记(六) --- 线程

Java学习笔记:高阶语法 Java多线程、集合、队列、栈等知识的简单介绍与演示。 阅读详情

Java 语法学习笔记(六) — 线程

Java 线程


参考教程

C语言中文网 — Java多线程

(该教程中有许多例子本人并不赞同)

学堂在线 — JAVA程序设计进阶

Java多线程的实现方式

  1. 继承 Thread 类

    • 使用继承 Thread 类的方式实现多线程,最大的局限就是不支持多继承
    • 继承类必须重写 run() 方法,线程实现的业务代码需要放到 run() 方法中
    • 线程必须调用 start() 方法才能执行
  2. 实现 Runnable 接口

    • 创建一个 Runnable 对象
    • 使用参数带 Runnable 对象的构造方法创建 Thread 实例
    • 调用 start() 启动线程

Java多线程之间访问实例变量

创建 Thread 对象时,使用同一 Runable 对象去实例化 Thread 对象,则各 Thread 对象可以共享该 Runable 对象的实例变量

synchronized 可以对该实例变量进行加锁,从而对临界区实现同步

同步互斥

  • 互斥是指散步在不同进程间的若干程序片段,当某个进程运行其中一个程序片段时,其他进程就不能运行它们之间的任一程序片段,直到该进程运行完这个程序片段
  • 同步是指散步在不同进程间的若干程序片段,它们的运行必须严格按照规定的某种先后次序运行,这种先后次序依赖要完成的特定的任务

Java Thread 对象方法

  • currentThread() 方法返回代码段正在被哪个线程调用的信息
  • isAlive() 方法判断当前的线程是否处于活动状态
  • sleep() 方法的作用是在指定的毫秒数内让当前“正在执行的线程”休眠(暂停执行)
  • getId() 取得正在运行线程的唯一标识
  • yieId() 方法的作用是放弃当前的 CPU 资源,将它让给其他的任务去占用 CPU 执行时间。但放弃的时间不确定,有可能刚刚放弃,马上又获得 CPU 时间片。

Java停止(终止)线程

停止一个线程意味着在线程处理完任务之前停掉正在做的操作,也就是放弃当前的操作。

Java 停止线程的方法

  1. 使用退出标识(this.isInterrupted()或者 return),使线程正常退出
  2. 使用 interrupt() 方法中断线程
  3. 使用 stop() 方法强行终止线程,该方法已被废弃;该方法可能产生不可预料的结果

Java 线程的优先级和执行顺序

优先级概述

在 Java 语言中,线程的优先级范围是 1~10,值必须在 1~10,否则会出现异常;优先级的默认值为 5。优先级较高的线程会被优先执行,当执行完毕,才会轮到优先级较低的线程执行。如果优先级相同,那么就采用轮流执行的方式。

总结 — 思维导图

1

【深入Java虚拟机】之六:Java语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家Peter.J.Landin发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。Java中最常用的语法糖主要有泛型、变长参数、条件编译、自动拆装箱、内部类等。虚拟机并不支持这些语法,它们在编译阶段就被还原回了简单的基础语法结构,这个过程成为解语法糖。 泛型是JDK1.5之后引入的一项新特性,Java语言在还没有出现泛型时,只能通过Object是所有类型的父类和类型强制转换这两 阅读详情

相关推荐

基于STM32开发的智能语音控制系统

本文将介绍如何使用STM32微控制器开发一个智能语音控制系统,通过语音识别模块、OLED显示屏、Wi-Fi模块等实现对家用电器或其他设备的语音控制。智能语音控制系统的核心是STM32微控制器,通过语音识别模块识别用户的语音指令,并根据指令控制家用电器或其他设备。:定期测试语音识别模块、继电器控制模块、OLED显示屏和Wi-Fi模块的工作状态,确保系统能够在各种情况下正常运行,并保持智能语音控制系统的可靠性。本系统同样适用于办公环境,可以通过语音指令控制办公室设备,如照明、空调等,提供智能化的办公体验。

stm32d1219的博客 6911

Java中Thread类的start()和run()方法

1、两个方法的区别 start(): 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。run() : run()就和普通的成员方法一样,可以被重复调用。单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程。 举例说明: class ThreadTest extends Thread{ public void run(){ ... } }; 然后假设在main方法中带创建了一个线程mythread...

wangqsse的博客 3395

OpenCV实战:5分钟搞定图像拼接(附Python代码)

本文通过OpenCV实战教程,详细讲解如何使用Python在5分钟内完成图像拼接。重点介绍`findHomography`函数和单应性矩阵的应用,提供完整的代码示例和常见问题解决方案,帮助开发者快速掌握图像拼接技术。

weixin_26833503的博客 121

java 多线程语法,Java 语法学习笔记(六) --- 线程

[TOC]参考教程(该教程中有许多例子本人并不赞同)Java多线程的实现方式继承 Thread 类使用继承 Thread 类的方式实现多线程,最大的局限就是不支持多继承继承类必须重写 run() 方法,线程实现的业务代码需要放到 run() 方法中线程必须调用 start() 方法才能执行实现 Runnable 接口创建一个 Runnable 对象使用参数带 Runnable 对象的构造方法创建 ...

weixin_36316102的博客 139

CAS5和CAS6自定义异常提示消息

CAS自定义异常提示消息

weixin_42949219的博客 979

HALCON基于描述符的模板匹配(未标定)

HALCON基于不标定描述符的模板匹配

king_linj的博客 891

Java 多线程学习笔记

*进程:**是操作系统进行资源分配和调度的基本单位,是程序的一次执行过程。**例如:**当你打开一个应用程序,如浏览器、音乐播放器等,操作系统就会为其创建一个进程。**线程:**是进程的一个执行单元,是 CPU 调度和分派的基本单位,一个进程可以包含多个线程。**例如:**在浏览器进程中,可以有多个线程同时运行,例如一个线程负责页面渲染,另一个线程负责网络请求。提高 CPU 利用率,充分利用多核处理器**例如:**下载软件使用多线程可以同时下载多个文件片段,充分利用带宽,提高下载速度。

2301_76962889的博客 2260

【使用DeepSeek辅助Python接口性能自动化测试教程-实战教程】

访问DeepSeek官方网站,注册账号并获取API Key。此Key是调用DeepSeek API的必要凭证,务必妥善保管。安装时,注意勾选“Add Python to PATH”选项,以便系统能识别Python命令。确保你已安装Python 3.8或更高版本。会自动发现并执行所有以。

Dreams°的博客 2466

Java 多线程(六)—— 线程池 和 工厂模式

介绍Java 的线程池以及工厂模式

熵减玩家 3066

我的世界进阶模组开发教程——制作机械动力附属模组

摘要: Create是Minecraft的机械动力模组,其代码结构分为多个关键模块: 数据生成系统:通过CreateRecipeProvider基类实现配方自动化生成,支持多步骤序列化装配配方(SequencedAssemblyRecipeGen),采用建造者模式链式调用; 注册管理:CreateRegistrate扩展了Registrate库,统一管理方块、流体、实体等注册,集成标签页分类和工具提示定制; 伤害系统:DamageTypeTagGen为机械伤害(如钻头、风扇火焰)定义原版兼容的标签; 客户端

qq_24992377的博客 2083

034、MLCA 多尺度局部上下文注意力的 YOLOv11 适配:轻量级金字塔式空间上下文聚合

本文介绍了一种将多尺度局部上下文注意力(MLCA)模块集成到YOLOv11模型中的方法,以解决小目标检测中空间信息丢失的问题。MLCA采用金字塔式局部上下文聚合策略,通过不重叠的网格划分实现轻量级空间注意力计算,相比全局注意力机制能更好地保留小目标特征。 作者详细记录了实现过程,包括模块定义、参数调优和训练技巧,特别指出避免使用BN而改用GroupNorm以提升训练稳定性。在VisDrone数据集上的实验表明,MLCA-YOLOv11在参数量和计算量基本不变的情况下,mAP提升2.5%,其中行人检测提升3.

sundong_81的博客 279

Java学习笔记-多线程

线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。进程是程序的基本执行实体。当核心线程都在运行以及任务队列满之后才能运行临时线程。都满了之后,舍弃任务10/** 参数一:核心线程数量 >=0* 参数二:最大线程数 >0 最大数量 >= 核心线程数量* 参数三:空闲线程最大存活时间 >=0* 参数四:时间单位 用TimeUnit指定* 参数五:任务队列 不能为null* 参数六:创建线程工厂 不能为null* 参数七:任务的拒绝策略 不能为null。

qq_45773654的博客 884

30 中望CAD二次开发(ZRX C++)-windows下的qt开发

本文介绍了中望CAD在windows下,如何使用qt开发插件界面,给出了具体的编码步骤,并生成了模态对话框和非模态对话框,其中非模态对话框可以调用CAD命令,实现交互操作。

cilvsuanna的博客 189

java学习笔记——多线程

总结:1.程序、进程和线程的区分:程序(program):为完成特定任务,用某种语言编写的`一组指令的集合`。即指一段静态的代码。进程(process):程序的一次执行过程,或是正在内存中运行的应用程序。程序是静态的,进程是动态的。进程作为操作系统调度和分配资源的最小单位。线程(thread):进程可进一步细化为线程,是程序内部的一条执行路径线程.作为CPU调度和执行的最小单位2.线程调度策略分时调度:所有线程轮流使用`CPU`的使用权,并且平均分配每个线程占用CPU的时间。

qq_58956810的博客 1084

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java多线程学习笔记

1.synchronized是关键字,Lock是接口;2.synchronized是隐式的加锁,lock是显式的加锁;3.synchronized可以作用于方法上,lock只能作用于方法块;4.synchronized底层采用的是objectMonitor,lock采用的AQS;5.synchronized是阻塞式加锁,lock是非阻塞式加锁支持可中断式加锁,支持超时时间的加锁;

2402_87028704的博客 712

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java基本语法

⭐️🙋‍♂️🍑🍅🌸🚀好久不见,甚是想念!大家好这是Java学习笔记的第二篇。今天这篇文章向大家详细的介绍了Java基本语法,包括关键字、标识符、变量、基本数据类型及其间的转换、各种编码和各种运算符,全程干货,尽情享用。下一篇将介绍程序流程控制~

2401_86400247的博客 2343

java线程重要语法

 Java支持一种“抢占式”(preemptive)调度方式。 (os)Newborn -己被创建但未执行,这时,线程对象己被分配内存空间,其私有数据己被初始化,但还未被调度对象可通过start()方法调度,或者利用stop()方法kill.新创建的线程一旦被调度,就将切换到"Runnable"状态。  Runnable-就绪。线程正等待处理器资源,随时可被调用执行Running -运行。Bloc

小鹿的专栏 2122

JAVA学习笔记-JAVA基础语法-DAY17-线程、同步

当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,有几种状态呢?在API中 java.lang.Thread.State 这个枚举中给出了六种线程状态:这里先列出各个线程状态发生的条件,下面将会对每种状态进行详细解析线程状态导致状态发生条件NEW(新建)线程刚被创建,但是并未启动。还没调用start方法。Runnable(可运行)线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操作系统处理器。

zzq393109417的博客 1107

JAVA线程池学习笔记

JAVA线程池的学习笔记。

passion 1076

【Java线程池与线程状态】线程池分类与最佳实践

解析Java线程池与线程状态变化,结合运行机制与业务场景对照,帮助形成系统性知识,还有线程池分类以及最佳实践。

weixin_42430947的博客 1276

【Java】多线程学习笔记

进程间通过管道、 共享内存、信号量机制、消息队列通信在java中要想实现多线程,有两种手段,

qq_45775791的博客 1351

Java之多线程学习笔记六 —— 实现Callable接口创建线程

Java之多线程学习笔记六 —— 实现Callable接口创建线程 下载图片举例 外部包详见 https://blog.csdn.net/qq_43594119/article/details/105915926 内容 package pers.ylw.lesson02; import org.apache.commons.io.FileUtils; import pers.ylw.less...

影龙武的博客qq_43594119 455

【JAVA】多线程学习笔记

多任务:多条执行路径,主线程和子线程并行交替执行程序:指令和数据的有序集合进程(Process):执行程序的一次执行过程,是资源分配的单位,每个进程有独立的地址空间线程(Thread):是CPU调度和执行的单位,一个进程可以有多个线程,共享进程的地址空间。线程有优先权,新线程的优先级较高。*真正的多线程是指多核/多CPU,如服务器。只有一个CPU的情况下,在同一个时间点只能执行一个代码,但是因为切换的很快所以就有同时执行的错觉。

weixin_47979757的博客 860

学习笔记:Java 并发编程⑥_并发工具_线程池

本文主要介绍了线程池的相关概念和相关应用。

做笔记,记录学习中遇到的问题。 983

java 线程语法_Java语法总结 - 线程

在论坛上面常常看到初学者对线程的无可奈何,所以总结出了下面一篇文章,希望对一些正在学习使用java线程的初学者有所帮助。首先要理解线程首先需要了解一些基本的东西,我们现在所使用的大多数操作系统都属于多任务,分时操作系统。正是由于这种操作系统的出现才有了多线程这个概念。我们使用的windows,linux就属于此列。什么是分时操作系统呢,通俗一点与就是可以同一时间执行多个程序的操作系统,在自己的电脑...

weixin_29144259的博客 285

java多线程个人学习笔记

需要在创建的类中重写run()方法,并将实现线程功能的代码写入run()方法,然后调用Thread类的start()方法执行线程。如果多线程程序中: 存在一个线程,现在需要插入另一个线程,要求插入的线程结束才能继续执行原来的线程,此时就需要用到join()方法。当创建一个新线程时,如果没有显式设置优先级,它将继承父线程的优先级,默认情况下父线程优先级为。每一个线程都有各自的优先级,如果有很多线程处于就绪状态,系统就会根据优先级来决定那个线程进入运行状态。线程是程序执行的最小单位,属于进程的一个执行单位,

2401_84040384的博客 835
上一篇: Java 语法学习笔记(四)
下一篇: 局域网下的两个 QQ 好友进行在线文件传输抓包
Mleeeeeee
博客等级 码龄10年 65粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值