一、线程主要有以下几种状态:

new(新建):线程刚刚被创建

runnable(就绪):新建的线程执行start方法进入就绪状态等待系统调度分配CPU,被分配了之后就进入运行中状态

blocked(阻塞):当线程执行被锁的代码块或方法时,等待其他线程释放锁而处于阻塞状态

waiting(等待):线程进入等待状态,需要等待其他线程做出一些特点动作(通知或中断)

time_waiting(超时等待):和waiting状态类似,不过可以在指定的时间自行结束等待

terminated(终止状态):当线程执行run方法完成或因为异常退出时进入终止状态

二、线程的各种状态的流转图如下示:

三、线程的各种方法用法

start():线程被创建之后,执行start方法使线程进入就绪状态,等待系统调度分配CPU来执行

run():线程执行业务逻辑,执行完成run方法里面的内容就会进入终止状态

yield():yield方法是让步的意思,将当前线程状态由“运行中”进入到“就绪状态”,目的是让出CPU来给其他线程来执行,但是不会释放当前线程持有的对象锁(让步之后就绪的线程等待CPU执行,有可能还会执行让步的线程)

wait():使当前线程进入等待状态,并且释放当前线程持有的对象锁,直到等待的时间到了或者是其他线程执行该对象的唤醒方法,如何才可继续进入就绪状态等待CPU

notify():唤醒该对象监视器上等待单个线程

notifyAll():唤醒该对象监视器上等待的所有线程

sleep():使当前线程进入睡眠等待状态,不会释放对象锁,睡眠时间结束重新进入就绪状态

join():join方法会使当前线程当期执行,直到join的线程执行完成才会继续执行。比如main方法里面有两个线程

t1.start();

t1.join();

t2.start();

则t1线程执行之后,再执行t1.join(),那么此时main线程就会放弃后面的执行,直到t1线程执行结束之后才会继续执行main线程,然后继续执行t2线程。

Java并发包常见异常_Java并发包1--线程的状态及常用方法相关推荐

  1. java中字输入输出异常_Java:详解Java中的异常(Error与Exception)

    一. 异常机制的概述 异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 程序错误分为三种:1 ...

  2. java异常处理机制--常见异常汇总

    ArithmeticExecption|算术异常类. NullPointerException|空指针异常类. ClassCastException|类型强制转换异常. NegativeArrayEx ...

  3. java中的常见异常1 -- 新手上路,减速慢行

    Throwable: 异常的顶级父类             ----Error:错误,程序无法处理             ----Exception:异常,可通过编码修复              ...

  4. java中的常见异常

    1. java.lang.NullPointerException(空指针异常)  调用了未经初始化的对象或者是不存在的对象 经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时 ...

  5. java 并发包 使用场景_java并发包原理及使用场景

    java并发包下有很多内置的处理线程安全问题工具类,在集合中就有2种线程同步的类,比如:Vector较ArrayList线程安全,但是效率较低,同样的还有Hashtable和HashMap,在实际项目 ...

  6. JAVA捕捉输入格式异常_Java学习(四).异常处理

    异常处理 任何一个软件或程序都可能在运行的过程中出现故障,问题的关键是故障出现以后如何处理?谁来处理?怎样处理?处理后系统能否恢复正常的运行?本章在介绍Java处理这类问题基本方法的基础上,讨论包含异 ...

  7. java中飞飞检查异常_Java复习6异常处理

    Java复习6.异常处理 20131005 前言: Java中的异常处理机制是非常强大的,相比C++ 来说,更加系统.但是我们开发人员没有很好的使用这一点.一些小的程序是没有什么问题的,但是对于大型项 ...

  8. java为啥要捕捉异常_java – 为什么在捕获时使用IOexception而不是Exception?

    我似乎无法正确地说出这一点,搜索引擎可以获得任何有意义的结果. try{ BufferedReader reader = new BufferedReader( new FileReader(&quo ...

  9. java try catch 捕捉异常_java的 try-catch异常捕捉处理

    1.try-catch方法 try { 语句.... } catch (InterruptedException e) { e.printStackTrace(); } 2.解释1 当try语句中出现 ...

最新文章

  1. Java操作Kafka执行不成功
  2. Ubuntu18.04安装Scala
  3. JAVA学习笔记-“Hello World”
  4. 数据可视化系列(四):文字图例尽眉目
  5. 【NOI2016】网格,离散化+求割点
  6. spyder替换_Spyder 快捷键大全
  7. 日本第四次产业革命瞄准物联网
  8. 关于vue2用vue-cli搭建环境后域名代理的http-proxy-middleware解决api接口跨域问题
  9. command -- 把动作封装成类
  10. Kafka监控系统Kafka Eagle:支持kerberos认证
  11. 【C009】ArcGIS VBA - 学习
  12. python贪吃蛇_python实现贪吃蛇
  13. vbs编程-执行cmd命令
  14. iris数据集(.csv .txt)免费下载
  15. 开关电源设计实例之Boost 篇
  16. 我来到广东第一“鬼城”,打算买房安家
  17. word列表数据计算机,怎么把树状图的数据填成excel表格-谁会计算机啊,怎么把word里的表格数据转换成簇状......
  18. 【架构】分布式系统及相关技术栈初了解
  19. A example of Maximum A Posteriori (MAP) estimation
  20. 【cocos2dx 3.3 lua】04 纸牌翻转效果--类似QQ斗地主癞子效果

热门文章

  1. Buck-Boost变换
  2. RGB和RGBQUAD的区别
  3. C# Winform实现捕获窗体最小化、最大化、关闭按钮事件的方法,可通过重写WndProc来实现
  4. vs2010项目属性配置
  5. iOS15仿微信详情二维码支持保存本地相册
  6. Python如何引用豆瓣api镜像地址
  7. flutter对比Android绘制流程,Flutter与android的对比---View
  8. python参数顺序 元组 字典_python学习之元组列表字典操作
  9. element-ui中el-drawer组件打开自动聚焦问题
  10. mysql忘记命令后半部分_Mysql 5 易忘的命令