线程的命名和取得|学习笔记

简介: 快速学习线程的命名和取得

开发者学堂课程【Java高级编程:线程的命名和取得】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/20


线程的命名和取得

多线程的运行状态是不确定的,那么在程序开发之中为了可以获取到一些需要使用的线程就只能依靠线程的名字来进行操作。

所以线程的名字是一个至关重要的概念,这样在Thread类之中就提供有线程名称的处理;

·构造方法:public Thread(Runnable target,String name);

·设置名字:public final void setName(String name);

·取得名字:public final String getName();

对于线程对象的获得是不可能只靠一个this来完成的,因为线程的状态不可控,但是有一点是明确的,所有的线程对象都一定要执行run()方法,那么这个时候可以考虑获取当前线程,在Thread类里面提供有获取当前线程的一个方法。

·获取当前线程:public static Thread current Thread():

范例:观察线程的命名操作

image.png

当开发者为线程设置名字的时候,而如果没有设置名字,则会自动生成一个不重复的名字,这种自动的属性命名主要是依靠了static属性完成的,在Thread类里面定义了如下操作:

private static int threadInitNumber;

private static synchronized int nextThreadNum(){

Return threadInitNumber++;

}

image.png

范例:观察一个程序

通过此时的代码可以发现当使用了“mt.run()”直接在主方法之中调用线程类对象中的run()方法所获得的线程对象的名字为“main”

所以可以得出一个结论:主方法也是一个线程。

那么现在问题来了,所有的线程都是在进程上的划分,那么进程在哪里?

每当使用Java命令执行程序的时候就表示启动了一个JVM的进程,一台电脑上可以同时启动若干个JVM进程所以每一个JVM的进程都会有各自的线程。

image.png

在任何的开发之中,主线程可以创建若干个子线程,创建子线程的目的是可以将一些复杂逻辑或者比较耗时的逻辑交给子线程处理;

范例:子线程的处理

image.png

主线程负责处理整体流程,而子线程负责处理耗时流程。

相关文章
|
存储 缓存 芯片
让星星⭐月亮告诉你,当我们在说CPU一级缓存二级缓存三级缓存的时候,我们到底在说什么?
本文介绍了CPU缓存的基本概念和作用,以及不同级别的缓存(L1、L2、L3)的特点和工作原理。CPU缓存是CPU内部的存储器,用于存储RAM中的数据和指令副本,以提高数据访问速度,减少CPU与RAM之间的速度差异。L1缓存位于处理器内部,速度最快;L2缓存容量更大,但速度稍慢;L3缓存容量最大,由所有CPU内核共享。文章还对比了DRAM和SRAM两种内存类型,解释了它们在计算机系统中的应用。
1602 1
|
搜索推荐 前端开发 架构师
阿里高级技术专家谈开源DDD框架:COLA4.0,分离架构和组件(上)
阿里高级技术专家谈开源DDD框架:COLA4.0,分离架构和组件(上)
2943 0
阿里高级技术专家谈开源DDD框架:COLA4.0,分离架构和组件(上)
|
10月前
|
人工智能 虚拟化 芯片
《解锁AI芯片新境界:提升专用人工智能芯片通用性与灵活性的热点技术》
在人工智能快速发展的背景下,专用AI芯片虽在特定任务上表现出色,但提升其通用性和灵活性成为关键。热点技术包括:可重构架构(如FPGA),支持动态调整硬件结构;混合精度计算,根据任务需求调整计算精度;多模态处理,融合视觉、语音等数据;软件定义硬件,通过编程实现功能灵活配置;硬件虚拟化,将物理资源虚拟化为多个独立逻辑单元;异构集成,结合CPU、GPU、NPU等单元协同工作。这些技术共同推动AI芯片的广泛应用和性能提升。
335 14
《解锁AI芯片新境界:提升专用人工智能芯片通用性与灵活性的热点技术》
|
12月前
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的QPSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的QPSK调制解调系统的硬件实现与仿真效果。系统包含测试平台(testbench)、高斯信道模块、误码率统计模块,支持不同SNR设置,并增加了ILA在线数据采集和VIO在线SNR设置功能。通过硬件测试验证了系统在不同信噪比下的性能,提供了详细的模块原理及Verilog代码示例。开发板使用说明和移植方法也一并给出,确保用户能顺利在不同平台上复现该系统。
462 15
|
JavaScript 前端开发
将base64格式的图片画到canvas上(js和vue两种)
将base64格式的图片画到canvas上(js和vue两种)
1043 1
|
移动开发 前端开发 架构师
前端架构师需要具备什么能力以及代码能力?
【7月更文挑战第17天】 前端架构师是技术、领导与管理的融合,需精通HTML/CSS/JS及React/Vue等框架,擅长工程化、跨平台开发与安全。他们设计高效架构,优化性能,领导团队,做技术选型,并持续学习分享,确保代码质量和团队成长。
739 7
|
负载均衡 应用服务中间件 Linux
在Linux中,Nginx如何实现负载均衡分发策略?
在Linux中,Nginx如何实现负载均衡分发策略?
|
搜索推荐 数据管理 开发者
合同管理的高级流程设计|学习笔记
快速学习合同管理的高级流程设计
合同管理的高级流程设计|学习笔记
|
设计模式 消息中间件 NoSQL
空窗期太长?这么说就对了!
空窗期太长?这么说就对了!
491 0
|
前端开发 JavaScript API
打造在线教育平台:Python后端与Vue前端的完美融合
【4月更文挑战第10天】本文探讨了如何利用Python后端与Vue前端构建功能强大、用户体验良好的在线教育平台。通过Python的Django或Flask框架搭建稳定API服务,结合Vue.js的组件化和数据驱动特性创建高效用户界面。步骤包括确定平台需求、构建后端、创建前端、前后端交互、实现认证授权、优化体验以及测试部署。这种技术融合为在线教育市场提供了一个高效、可扩展的解决方案,适应未来教育平台的智能化、个性化和多元化趋势。
705 1