Java线程既然能够创建,那么也势必会被销毁,所以线程是存在生命周期的,那么我们接下来从线程的生命周期开始去了解线程。

线程一共有6种状态(NEW、RUNNABLE、BLOCKED、WAITING、TIME_WAITING、TERMINATED)

NEW:初始状态,线程被构建,但是还没有调用start方法

RUNNABLED:运行状态,JAVA线程把操作系统中的就绪和运行两种状态统一称为“运行中”

BLOCKED:阻塞状态,表示线程进入等待状态,也就是线程因为某种原因放弃了CPU使用权,阻塞也分为几种情况

等待阻塞:运行的线程执行wait方法,jvm会把当前线程放入到等待队列

同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被其他线程锁占用了,那么jvm会把当前的线程放入到锁池中

其他阻塞:运行的线程执行Thread.sleep或者t.join方法,或者发出了I/O请求时,JVM会把当前线程设置为阻塞状态,当sleep结束、join线程终止、io处理完毕则线程恢复

TIME_WAITING:超时等待状态,超时以后自动返回

TERMINATED:终止状态,表示当前线程执行完毕

启动一个线程前,最好为这个线程设置线程名称,因为这样在使用jstack分析程序或者进行问题排查时,就会给开发人员提供一些提示

显示线程的状态

运行该示例,打开终端或者命令提示符,键入“jps”,(JDK1.5提供的一个显示当前所有java进程pid的命令)

根据上一步骤获得的pid,继续输入jstack pid(jstack是java虚拟机自带的一种堆栈跟踪工具。jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息)

通过上面的分析,我们了解到了线程的生命周期,现在在整个生命周期中并不是固定的处于某个状态,而是随着代码的执行在不同的状态之间进行切换

线程的启动

前面我们通过一些案例演示了线程的启动,也就是调用start()方法去启动一个线程,当run方法中的代码执行完毕以后,线程的生命周期也将终止。调用start方法的语义是当前线程告诉JVM,启动调用start方法的线程。

Java并发编程的基础-线程的生命周期相关推荐

  1. Java并发编程的基础-线程的终止原理

    我们来看一下 thread.interrupt()方法做了什么事情 这个方法里面,调用了interrupt0(),这个方法在前面分析start方法的时候见过,是一个native方法,这里就不再重复贴代 ...

  2. Java并发编程的基础-线程的终止

    线程的启动过程大家都非常熟悉,但是如何终止一个线程呢? 这是面试过程中针对3年左右的人喜欢问到的一个题目. 线程的终止,并不是简单的调用stop命令去.虽然api仍然可以调用,但是和其他的线程控制方法 ...

  3. 学习笔记:Java 并发编程①_基础知识入门

    若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 视频下载: ...

  4. java并发编程实践(2)线程安全性

    [0]README 0.0)本文部分文字描述转自:"java并发编程实战", 旨在学习"java并发编程实践(2)线程安全性" 的相关知识: 0.1)几个术语( ...

  5. Java并发编程实战基础概要

    文章目录 Java并发编程实战基础概要 开篇 多线程问题有啥难点呢? 为啥要学习并发编程? 并发问题的根源是什么? CPU切换线程执导致的原子性问题是如何发生的? 缓存导致的可见性问题是如何发生的? ...

  6. Java 多线程(三) 线程的生命周期及优先级

    Java 多线程(三) 线程的生命周期及优先级 线程的生命周期 线程的生命周期:一个线程从创建到消亡的过程. 如下图,表示线程生命周期中的各个状态: 线程的生命周期可以分为四个状态: 1.创建状态: ...

  7. Java并发编程—什么是线程?

    原文作者:way_more 原文地址:Java 多线程常见基础面试题总结,面试必看! 目录 一.什么是线程和进程? 二.简要描述线程与进程的关系 三.FAQ 一.什么是线程和进程? 1.1. 何为进程 ...

  8. java并发编程第一课 线程的创建、停止和状态变更

    开篇词: 由点及面,搭建你的 Java 并发知识网 你好,欢迎学习<Java 并发编程核心 78 讲>,我是讲师星星,一线互联网公司资深研发工程师,参与过集团内多个重点项目的设计与开发. ...

  9. JAVA并发编程的基础

    1.线程简介 什么是线程? 操作系统在运行一个程序时,会为其创建一个进程. 线程是操作系统调度的最小单元,也叫轻量级进程. 在一个进程里可以创建多个线程,这些线程拥有各自的计数器.堆栈和局部变量等属性 ...

最新文章

  1. 世界上最大的黑客 Party,有关“DEFCON”的十个冷知识
  2. selector多路复用_超详细的I/O多路复用概念、常用I/O模型、系统调用等介绍
  3. 关于readdir返回值中struct dirent.d_type的取值有关问题(转)
  4. 技术干货|基于Apache Hudi 的CDC数据入湖
  5. 优雅地关闭资源,try-with-resource语法和lombok@Cleanup
  6. react native开发的新闻客户端
  7. Bootstrap 可切换的标签导航
  8. 论文《Learning Spatial Fusion for Single-Shot Object Detection》解读
  9. PL/SQL远程连接Oracle数据库服务器
  10. 如何在Python中创建常量?
  11. 调整DOS窗口大小的方法 2021-03-06
  12. eclipse angularjs 插件安装
  13. FFmpeg —— 屏幕录像机
  14. Android音量系统分析
  15. Vulcan 团队信息
  16. 读取文件云服务器bcc,云服务器bcc 使用
  17. 一个很好的看电子书的软件
  18. 『R语言Python』建模前的准备:连续型与离散型变量探索,离散型变量转为虚拟变量
  19. 用canvas画一个太极图(八卦图)
  20. win10安装wsl 2.0子系统 安装在非C盘

热门文章

  1. 安装java环境linux和windows
  2. jQuery 阻止冒泡和默认事件
  3. POJ2513-Colored Sticks
  4. UVA11019 Martix Matcher --- AC自动机
  5. selenium,webdriver 执行js语句 对象是百度
  6. Win10 IoT 10 中文显示乱码或报错的问题
  7. .Net(c#)加密解密之Aes和Des
  8. Class.getResource()、ClassLoader.getResource()和this.class.getClassLoader()解析
  9. jQuery图片自动轮转动画特效
  10. 【转】别人整理的DP大全