参考书籍:《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. python操作DB2数据库

    #!/usr/bin/env python# -*- coding:utf-8 -*- ########################## excute python2.7.13# sudo pip ...

  2. 牛客多校第六场-H-Pair

    链接:https://ac.nowcoder.com/acm/contest/887/H来源:牛客网 题目描述 Given three integers A, B, C. Count the numb ...

  3. SpringMVC整合Freemarker(含Demo源码)(转)

    转自:http://blog.csdn.net/sinat_27535209/article/details/61199452 整合过程如下: 1.新建一个maven web工程,使用maven依赖s ...

  4. matlab 生成.exe文件 转

    本文链接:https://blog.csdn.net/qq_20823641/article/details/51863737 如何将MATLAB程序编译成独立可执行的程序?如何将编译好的独立可执行程 ...

  5. php重定向说明

    302  临时重定向 header("location:http://api.com/headline?" . http_build_query($_REQUEST)); 301  ...

  6. spring约束

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  7. TxtUtil

    /** *包名:cn.yufu.utils *描述:package cn.yufu.utils; */ package cn.yufu.utils; import java.io.BufferedRe ...

  8. 欧拉降幂,基本计算定理——cf615D

    用基本算数定理求约数和的思想来计算, 首先用pi,ci来表示第i个质数,指数为i,然后对于每个pi,pi^2...都有指数为mul{(c_1+1)(c_2+1)(c_i-1+1)(c_i+1+1).. ...

  9. hive中分隔符‘\001’到底是什么鬼

    答:hive中的默认的是'\001'是一种特由的分隔符 使用的是ascii编码的值,键盘是打不出来的.

  10. (转)即时通讯IM OpenFire源码学习之三:在Eclipse中构建源码

    转:http://blog.csdn.net/huwenfeng_2011/article/details/43412617 源码搭建 下载地址: 地址:http://www.igniterealti ...