java中线程的状态学习笔记
java开发中,我们经常会遇到线程的问题,比如你做一个商城,就需要考虑它的并发问题等等,今天给大家分享一下java中线程的状态
先说线程的第一个状态,是新建状态,这个是线程刚刚创建的时候,如:
new Thread(),具体如图
线程的第二种状态是可执行状态,就是调用了start方法后的状态,当然了,一个运行的状态,他有可能是正在运行的,也有可能是没有运行的,只是他的状态是可运行的状态,具体如图
第三种状态是被阻塞或者处于等待的线程,处于这种状态下的线程是不活动且不运行的,比如说调用了wait方法等都会造成等待的情况,具体如图
第四种状态就是被终止的状态,这种状态和和上面的状态不一样,上面阻塞状态是可以在激活的,终止之后要想在启动,只能重新调用start方法,终止也有两种方式,第一种是run方法的正常退出,第二种是因为没有捕获到异常而意外终止了,或者使用stop也可以,具体如图
最后给大家看一个关于线程之间的关系图,包括新建,运行,阻塞和被终止之间的关系,具体如图
相关推荐
-
Java线程状态及切换、关闭线程的正确姿势分享
前言 在讲线程之前有必要讨论一下进程的定义:进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位.进程实体由程序段, 数据段 PCB(进程控制块)组成.线程又是什么?线程可以看做轻量级进程,线程是进程的执行单元,是进程调度的基本单位 本文将详细介绍关于Java线程状态及切换.关闭线程的相关内容,下面话不多说了,来一起看看详细的介绍吧 1.线程状态及切换 Java中的线程有六种状态,使用线程Thread内的枚举类来实现,如下,我对每个状态都进行了一定的解释. public
-
Java 实现多线程切换等待唤醒交替打印奇偶数
引言 在日常工作生活中,可能会有用时几个人或是很多人干同一件事,在java编程中,同样也会出现类似的情况,多个线程干同样一个活儿,比如火车站买票系统不能多个人买一到的是同一张票,当某个窗口(线程)在卖某一张票的时候,别的窗口(线程)不允许再卖此张票了,在此过程中涉及到一个锁和资源等待的问题,如何合理正确的让线程与线程在干同一件事的过程中,不会抢资源以及一个一直等待一个一直干活的状况,接下来就聊一下多线程的等待唤醒以及切换的过程,在此就以A和B两个线程交替打印奇偶数的例子为例,代码如下: pack
-
RxJava的消息发送和线程切换实现原理
RxJava是一个在Java虚拟机上的响应式扩展,通过使用可观察的序列将异步和基于事件的程序组合起来的一个库. 它扩展了观察者模式来支持数据/事件序列,并且添加了操作符,这些操作符允许你声明性地组合序列,同时抽象出要关注的问题:比如低级线程.同步.线程安全和并发数据结构等. RxJava相信大家都非常了解吧,今天分享一下RxJava的消息发送和线程源码的分析.最后并分享一个相关demo,让大家更加熟悉我们天天都在用的框架. 消息订阅发送 首先让我们看看消息订阅发送最基本的代码组成: Observ
-
Java线程的新建和就绪状态实例分析
本文实例讲述了Java线程的新建和就绪状态.分享给大家供大家参考,具体如下: 一 点睛 当线程被创建启动以后,它既不是一启动就进入执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建.就绪.运行.阻塞和死亡5种状态.当线程启动后,它不可能一直霸占CPU独自运行,所以CPU需要在多个线程之间切换,于是线程状态也会多次在运行和就绪之间切换. 当程序使用new关键字创建一个线程后,该线程就处于新建状态. 当线程对象调用start()方法之后,该线程就处于就绪状态,处于这个状态的线程并没有
-
学习Java多线程之线程定义、状态和属性
一 .线程和进程 1. 什么是线程和进程的区别: 线程是指程序在执行过程中,能够执行程序代码的一个执行单元.在java语言中,线程有四种状态:运行 .就绪.挂起和结束. 进程是指一段正在执行的程序.而线程有事也被成为轻量级的进程,他得程序执行的最小单元,一个进程可以拥有多个线程,各个线程之间共享程序的内功空间(代码段.数据段和堆空间)及一些进程级的资源(例如打开的文件),但是各个线程都拥有自己的棧空间. 2. 为何要使用多进程 在操作系统级别上来看主要有以下几个方面: - 使用多线程可以减少程序
-
Java实现监控多个线程状态的简单实例
实例如下: import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.Executors; /** * 测试监控类 * * @author * */ public class WatchThread { /** * 测试函数 * * @throws InterruptedException */ public void testThre
-
Java线程的生命周期和状态控制_动力节点Java学院整理
一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态(runnable). 注意:不能对已经启动的线程再次调用start()方法,否则会出现Javalang.IllegalThreadStateException异常. 2.就绪状态 处于就绪状态的线程已经具备了运行条件,但还没有分配到CPU,处于线程就绪队列(尽管是采用队列形式,事实上,把它称
-
基于java 线程的几种状态(详解)
线程可以有六种状态: 1.New(新创建) 2.Runnable(可运行)(运行) 3.Blocked(被阻塞) 4.Waiting(等待) 5.Timed waiting(计时等待) 6.Terminated(被终止) 新创建线程: 当用new操作符创建一个新线程时,如new Thread(r),该线程还没有开始运行,它的当前状态为new,在线程运行之前还有一些基础工作要做. 可运行线程: 一旦线程调用start方法,线程处于runnable状态.在这个状态下的线程可能正在运行也可能没有运行(
-
总结Java中线程的状态及多线程的实现方式
线程的状态 线程状态图: 说明: 线程共包括以下5种状态. 1. 新建状态(New) : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread(). 2. 就绪状态(Runnable): 也被称为"可执行状态".线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程.例如,thread.start().处于就绪状态的线程,随时可能被CPU调度执行. 3. 运行状态(Running) : 线程获取CPU权限进行执行.需要注意
-
Java线程池运行状态监控实现解析
在实际开发过程中,在线程池使用过程中可能会遇到各方面的故障,如线程池阻塞,无法提交新任务等. 如果你想监控某一个线程池的执行状态,线程池执行类 ThreadPoolExecutor 也给出了相关的 API, 能实时获取线程池的当前活动线程数.正在排队中的线程数.已经执行完成的线程数.总线程数等. 总线程数 = 排队线程数 + 活动线程数 + 执行完成的线程数. 线程池使用示例: private static ExecutorService es = new ThreadPoolExecutor(
随机推荐
- Linux下创建Postgresql数据库的方法步骤
- Linux下安装或升级Python 2.7的操作方法
- 代理服务器的搜索和验证的分析
- CentOS下搭建PHP环境与WordPress博客程序的全流程总结
- Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
- c#通过DES加密算法加密大文件的方法
- js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
- PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
- 详解Java编程中static关键字和final关键字的使用
- 免费的Linux在构建绿色校园网中的应用
- C语言实现xml构造解析器
- JS基于贪心算法解决背包问题示例
- CentOS 7更新时出现:Multilib version problems问题的解决方法
- Java+opencv3.2.0实现重映射
- vue实现动态按钮功能
- 模块化react-router配置方法详解
- iOS使用音频处理框架The Amazing Audio Engine实现音频录制播放
- C#中将xml文件反序列化为实例时采用基类还是派生类的知识点讨论
- vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
- JS实现匀速与减速缓慢运动的动画效果封装示例