原标题:多线程开发不得不掌握,设置和获取线程名称及JVM如何运行的

欲善编程,多看、多敲、多讨论;动眼、动手、动大脑。

1 如何设置和获取线程名称

多线程的运行状态是不确定的,在程序开发过程中,想要获取一些使用中的线程进行操作。那么给线程命名就至关重要。给线程命名第一个办法是通过构造方法设置线程的名称,构造方法:public Thread(Runnable target,String name),其中 String name即线程名称;第二种方法setName方法:public final void setName(String name);而获取线程名称的方法是:public final String getName()。接下来我们通过不同的方法来设置并获取线程的名称。

注意,如果是运行中线程的线程要获取自身名称,方法是在run中使用:Thread.currentThread().getName();

2 创建一个ThreadNameDemo类

先创建一个ThreadNameDemo类,并在里面创建一个MyThread4内部类,MyThread4实现Runnable接口。在run方法中,我们输出当前线程名称,代码如下图。

3 测试设置和获取线程名称

线程A通过构造方式的形式线程类的构造方式进行赋值,线程B通过setName方式进行赋值,并都成功通过getName的方法获取到了线程的名称。线程启动之后,在线程内部也成功获取到线程名称。代码及运行结果如下图。

4 匿名线程与主线程的名称

在构造方法中,不设置线程名称,然后启动,并获取线程名称。运行结果,获取到的线程名称是Thread-0。查看Thread源码,在其init初始化方法中,可以找到这么一段代码,"Thread-" + nextThreadNum(),也就是系统会给匿名线程一个默认的名字,从0开始自增。

直接调用线程的run方法,在线程运行的时候,获取线程名称返回的并不是Thread-0,而是main,说明myThread3.run()方法确实是运行在主线程。运行测试结果如下图。

5 JVM运行在哪里

现在知道主线程名称是main,java程序运行在JVM中,但是java虚拟机是运行在哪里呢?

每秒钟新建一个线程,并让线程睡60秒。然后把java程序启动两次。启动完之后,我们打开任务管理器,在进行选项卡下,找到Idea进程,然后打开下拉,会发现多了两个Java(TM) Platform SE binary。说明刚才我刚才运行的JVM运行在进程中,并且在性能界面,可以看到线程数一直在增加。

当最后一个线程关闭,也就是120秒之后,java程序运行结束,JVM关闭后,任务管理器中的Java(TM) Platform SE binary进程也消失了。

代码及运行结果如下。

敬请期待关于线程的更多奥秘。

6 结束语

人人都是程序员,感谢您的阅读,欢迎关注。返回搜狐,查看更多

责任编辑:

java里新建线程设置线程名字_多线程开发不得不掌握,设置和获取线程名称及JVM如何运行的...相关推荐

  1. java 线程间变量共享_多线程:(五)多个线程之间共享数据

    简单的总结一下多线程共享数据的方式.其实,最重要的,是一个思想,一个面向对象的编程思想的建立. 说两点: 一.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中 ...

  2. vscode写php高亮,vscode如何设置代码高亮_编程开发工具

    如何修改vscode字体大小_编程开发工具 修改vscode字体大小的方法是:1.首先打开vscode,依次打开[文件].[首选项].[设置]选项:2.然后展开[常用设置],找到[Editor:Fon ...

  3. java线程中的常用方法_[多线程] 线程中的常用方法-最详细

    线程中常用的方法 1.public void start() 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 2.public void run() 如果该线程是使用独立的 Runna ...

  4. java 里如何实现逻辑返回值_☆技术问答集锦(五)

    1 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别 区别主要答两点: 条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型: 逻辑操作不会产生短 ...

  5. java的多线程机制_Java多线程开发(一)| 基本的线程机制

    0. 前言 Java 为了实现跨平台,在语言层面上实现了多线程.我们只需要熟悉 Java 这一套多线程机制就行了,比 C/C++ 要容易多了. 1. 定义任务 我们编写程序,最终是为了完成特定的任务. ...

  6. php配置北京时间,php如何设置北京时间_后端开发

    PHP递归算法的应用(含示例)_后端开发 ​递归函数为自调用函数,在函数体内直接或直接自个调用自个,但需求设置自调用的条件,若满意条件,则调用函数自身,若不满意则停止本函数的自调用,然后把目前流程的主 ...

  7. 小米手机证书信任设置在哪里_手机闹钟在哪里设置

    如今手机功能丰富多样,或许有些朋友还会搞不清楚手机闹钟在哪里设置,下面就给大家简单介绍下手机闹钟在哪里设置的问题. 手机闹钟在哪里设置 以下是苹果手机闹钟设置的方法 步骤1.拿到手机,找到时钟应用,点 ...

  8. orcad如何设置模块化设计_充气膜结构送风设置设计以及通风效果如何呢?

    充气膜结构工程在国内普及以及应用的范围并不广泛,现阶段总体上还处于观摩的状态,但是这不影响其在一些领域上的应用,对于充气膜结构建筑而言,其在国内的环保性治理以及体育行业应用方面上取得一定的成果,对于这 ...

  9. 安卓手机的证书信任设置在哪_安卓手机来电闪光灯设置

    有没有羡慕过苹果手机上的来电闪光灯 我承认我肯定是羡慕过,不然的话我今天也不会写这篇文章 在我看来这不仅是一个很帅的功能,而且还是特别实用的功能 他能给我们换一种方式来提供手机消息的到来 既然他这么好 ...

最新文章

  1. java程序员入门先学什么开发者工具
  2. numba 让python速度提升百倍
  3. C++基本序列式容器效率比较
  4. 一次授权测试引起的全域名沦陷
  5. 肖像:作家艺术家之一
  6. VUE 响应式原理源码:带你一步精通 VUE | 原力计划
  7. Android----Google code android开源项目(二)
  8. docker安装gamit_ubuntun10.10中安装gamit 10.40
  9. JAVA rs 是否要关闭_关闭结果集rs和statement以后,是否还要关闭数据库连接呢?...
  10. ThreadLocal源码学习
  11. python颜色识别,46行代码实现865种颜色识别,看过的都说顶呱呱!
  12. 新版Excel和Word全屏打印预览的设定方法
  13. 15日精读掌握《高德纳:具体数学》计划(2019.5/27-2019/6/10)
  14. 提供多种版本- MSI Code条形码字体具有可扩充性条形码控件MSI Plessey
  15. 瑞斯康达EPON OLT-ISCOM6800开局配置
  16. 工业级无线路由器自助设备无线联网
  17. 电脑无故关机,出现提示:从异常关机中恢复 bluescreen.........
  18. html盒子模型 正方形嵌套,前端box(盒子嵌套)
  19. python 会计应用软件_下列关于会计核算软件记账功能的说法中,正确的有(  )。...
  20. 使用swiper插件时不会自动轮播

热门文章

  1. 竹间智能B轮3000万美元融资,打造业内领先的对话机器人及多模态情感计算平台...
  2. 【Debug探索团队公告】Debug探索团队,邀请您的加入
  3. 2017-09-20 前端日报
  4. hbase1.3版本启动流程及优化
  5. 「懒惰的美德」我用 python 写了个自动生成给文档生成索引的脚本
  6. javascript模板库jsrender加载并缓存外部模板文件
  7. 翻译 Windows Server 2016和System Center 2016 技术预览版4 使创新更容易
  8. php 人像识别,基于OpenCV的PHP图像人脸识别技术
  9. 刺客信条起源计算机内存不足,刺客信条起源需要什么配置能玩?最低/推荐配置需求介绍...
  10. 建设自己拥有的B2C网站一般需要什么样的插件以及大体花费