参考书籍:《java多线程核心编程技术》

Thread相关API,这些API可以改变线程对象的状态

          

  • 新建一个线程对象,调用start方法后,系统会为该线程分配CPU资源,此时该线程处于可运行状态(Runnable),这是一个准备运行的状态。如果线程能够抢占到CPU资源,就会处于运行状态(Running)
  • Runnable和Running状态可以相互转换,因为可能一个线程执行一段时间后,有其他线程抢占了CPU资源,这时该线程就从Running切换到Runnable状态
  • 线程执行过程中遇到一个阻塞式IO操作,在该IO操作执行结束前,该线程处于阻塞状态
  • run方法运行结束后进入销毁阶段,整个线程执行完毕

线程进入Runnable状态的情况:

  • 调用sleep方法后经过指定休眠时间
  • 线程调用的阻塞IO已经返回,阻塞方法执行结束
  • 执行挂起suspend方法的线程,又调用了resume方法
  • 调用了wait方法的线程对象在等待唤醒,另一个线程发出了唤醒(同一个同步锁)
  • 线程对象调用了start方法,且获得了同步监视器

线程出现阻塞Blocked的情况:

  • 调用sleep方法还没有达到指定的休眠时间
  • 调用suspend挂起方法(容易发生死锁)
  • 调用阻塞式IO方法,且还没有返回结果
  • 调用了wait方法,且没有收到notify唤醒
  • 线程试图获取同步监视器,但是该同步监视器被另一个线程持有

每个锁对象都有两个队列,就绪队列和阻塞队列。就绪队列存储了获得锁的线程,阻塞队列存储了被阻塞的线程。

一个线程被唤醒后才会进入就绪队列等待cpu调度;反之,一个线程被wait后,就会进入阻塞队列,等待下一次唤醒

Thread相关API的更多相关文章

  1. java 11 移除的一些其他内容,更简化的编译运行程序,Unicode 10,移除了不太使用的JavaEE模块和CORBA技术,废除Nashorn javascript引擎,不建议使用Pack200 相关api

    移除的一些其他内容 移除项 移除了com.sun.awt.AWTUtilities 移除了sun.misc.Unsafe.defineClass, 使用java.lang.invoke.MethodH ...

  2. 029 RDD Join相关API,以及程序

    1.数据集 A表数据: 1 a 2 b 3 c B表数据: 1 aa1 1 aa2 2 bb1 2 bb2 2 bb3 4 dd1 2.join的分类 inner join left outer jo ...

  3. JBPM4.4_核心概念与相关API

    1. 核心概念与相关API(Service API) 1.1. 概念:Process definition, process instance ,  execution 1.1.1. Process ...

  4. OC中并发编程的相关API和面临的挑战

    OC中并发编程的相关API和面临的挑战(1) 小引 http://www.objc.io/站点主要以杂志的形式,深入挖掘在OC中的最佳编程实践和高级技术,每个月探讨一个主题,每个主题都会有几篇相关的文 ...

  5. OpenGL FrameBufferCopy相关Api比较(glCopyPixels,glReadPixels,glCopyTexImage2D,glFramebufferTexture2D)

    OpenGL FrameBufferCopy相关Api比较 glCopyPixels,glReadPixels,glCopyTexImage2D,glFramebufferTexture2D 标题所述 ...

  6. QQ音乐的各种相关API

    QQ音乐的各种相关API 分类: oc2014-01-29 15:34 2676人阅读 评论(2) 收藏 举报 基本上论坛里做在线音乐的都在用百度的API,进来发现百度的API不仅歌曲的质量不可以保证 ...

  7. addChildViewController相关api深入剖析

    注:本文根据个人的实践和理解写成,若有不当之处欢迎斧正和探讨! addChildViewController是一个从iOS5开始支持的api接口,相关的一系列的接口是用来处理viewcontrolle ...

  8. [原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. 关于iOS中用AudioFile相关API解码或播放AAC_HE_V2时仅仅能识别单声首22.05k採样率的问题

    关于iOS中用AudioFile相关API解码或播放AAC_HE_V2时仅仅能识别单声首22.05k採样率的问题 在官方AQPlayer Demo 和 aqofflinerender中.都用了Audi ...

随机推荐

  1. Java转型大数据开发全套教程,都在这儿!

    众所周知,很多语言技术已经在长久的历史发展中掩埋,这期间不同的程序员也走出的自己的发展道路. 有的去了解新的发展趋势的语言,了解新的技术,利用自己原先的思维顺利改变自己的title. 比如我自己,也都 ...

  2. python操作xls表

    1.python读取excel中单元格内容为日期的方式 python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype: ? 1 ctype : 0 empty,1 string, ...

  3. Msys2编译Emacs

    Msys2编译Emacs */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #839496;} Msy ...

  4. @Validated和@Valid区别:Spring validation验证框架对入参实体进行嵌套验证必须在相应属性(字段)加上@Valid而不是@Validated

    Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR- ...

  5. CTF中的AWD套路

    今年参加了三起CTF比赛,属于初学者,基本除了web其他的不会,但分赛场AWD相对就没什么难度,基本都是技巧性.其中一场进入复赛了,本月底再次比赛(ctf题做的这么渣还能进也是绝了~),参照前人经验补 ...

  6. springMVC相应之返回值

    string返回值: <%-- Created by IntelliJ IDEA. User: Administrator Date: 2019/11/12 Time: 16:24 To cha ...

  7. AJAX 向后台发送带 List 集合的对象(转)

    var school = {};school.name = '清华大学';school.address = "北京";//此处使用的是 easyui 插件来获取数据var rows ...

  8. 【记录】Nginx错误could not build the server_names_hash you should increase server_names_hash_bucket_size: 32

    今天遇到这个错误,现记录下解决方案: 在nginx的配置文件的http段中增加如下配置: server_names_hash_bucket_size 64; 下面是nginx官方文档解释: 如果定义了 ...

  9. Arch安装墨刀(产品原型工具)

    Arch通过aur安装墨刀的时候报错,查看PKGBUILD发现下载地址错误("https://s3.cn-north-1.amazonaws.com.cn/modao/download&qu ...

  10. day03 python数据类型 数字 字符串 布尔

    day03 python   一.基本数据类型     1.int a= 8 a_length = a.bit_length()  #此方法求数字的二进制长度  print(a_length)     ...