线程可以创建6状态:
  New()新创建、Runnable(可运行)、Blocked(被阻塞)、 Waiting(等待)、Timed waiting(计时等待)、Terminated(被终止)
1 新建线程
  当用new操作符创建一个线程时,如new Thread(r),该线程还没有开始运行。这意味着它的状态是new。当一个线程处于此状态时,程序还没开始执行线程中的代码。在线程运行之前还有一些基础工作要做。
2 可运行线程
  一旦调用start()方法,线程就处于runnable状态,但是却不必保持运行。运行中的线程中断,目的是为了让其他线程获得运行机会。抢占式调度系统给每一个可运行线程一个时间片来执行任务。当时间片用完,会剥夺该线程的运行权,并给另一个线程运行机会。当选择下一个进程时,会考虑线程的优先级。
3 被阻塞线程和等待线程
  
  如上图所示,当一个线程试图获取一个内部对象锁,而该锁被其他线程持有,则该线程进入堵塞状态。当所有其他线程释放该锁,并且线程调度器允许本线程持有时,变为非堵塞状态。
  当线程等待另一个线程通知调度器一个条件时,自己进入等待状态。有几个方法有一个超时参数。调用它们导致线程进入计时等待状态。这一状态将一直保持到超时期满或者接收到适当的通知。带有超时参数的方法由Thread.sleep, Object.wait, Thread.join, Lock.tryLock, Condition.await的计时版。
  当一个堵塞或等待的线程被重新激活时(例如,因超时期满或成功获得了一个锁),调度器会检查是否比当前运行的线程有更高的优先级。
 4 被终止的线程
  线程被终止的原因:
    1) run方法正常退出而自然死亡。
    2) 因为一个没有捕获的异常终止了run方法而导致意外死亡。

Java线程:线程状态的更多相关文章

  1. java 22 - 18 多线程之 线程的状态转换、线程组

    线程的状态转换图解:图片 线程的线程组: 线程组: 把多个线程组合到一起.    它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制. 首先创建一个Runnable的实现类 publi ...

  2. Java多线程 - 线程状态

    转自: http://www.cnblogs.com/lwbqqyumidi/p/3804883.html 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的 ...

  3. java基础知识回顾之java Thread类学习(十)--线程的状态以及转化使用的方法介绍

       线程的概述:         线程是程序的多个执行路径,执行调度的单位,依托于进程存在.线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间叫做线程栈,是建立线程的时候由系 ...

  4. Java 线程的状态

    Java Thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常 ...

  5. Java多线程——线程的生命周期和状态控制

    一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就 ...

  6. JAVA中线程的状态

    java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW:至今尚未启动的线程的状态. RUNNABLE:可运行线程的线程状态. ...

  7. Java多线程(一) —— 线程的状态详解

    一.多线程概述  1. 进程 是一个正在执行的程序.是程序在计算机上的一次运行活动. 每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 系统以进程为基本单位进行系统资源的调度 ...

  8. java中线程的状态详解

    一.线程的五种状态   线程的生命周期可以大致分为5种,但这种说法是比较旧的一种说法,有点过时了,或者更确切的来说,这是操作系统的说法,而不是java的说法.但对下面所说的六种状态的理解有所帮助,所以 ...

  9. Java线程的状态

    Java线程的状态 线程对象在不同的运行时期有不同的状态,状态信息就存在于Thread中的State枚举中,如下所示: public enum State { /** * 至今尚未启动的线程处于这种状 ...

  10. Java - "JUC线程池" 线程状态与拒绝策略源码分析

    Java多线程系列--“JUC线程池”04之 线程池原理(三) 本章介绍线程池的生命周期.在"Java多线程系列--“基础篇”01之 基本概念"中,我们介绍过,线程有5种状态:新建 ...

随机推荐

  1. editplus 常用

    个人习惯风格基本设置:document >preferences >fonts|( Comic sans MS  blod 18) -------------------- \n 去换行 ...

  2. 要你的祝福.lrc

    要你的祝福(电影<我是路人甲>插曲 试听版) - 李潇潇 午夜的温度慢慢起舞 穿梭的人潮有些荒芜 开始欢呼 开始麻木 谁被谁在安抚 落单的幸福变得模糊 孤单的城市独自起舞 也许满足 也许糊 ...

  3. UITextField和UIViewConteoller

    UITextField控件 UITextFiled常用属性和方法   UITextField是常用的文本输入控件,比如我们用的QQ的登录界面,词典输入要查询的单词都使用了文本框控件,如下图所示.之前介 ...

  4. 可能是最简单的方式:利用Eclipse创建基于Maven的Web项目

    1. 新建一个maven项目 2.在弹出框中选择创建一个简单项目 3. 然后输入参数,需要注意的是,在packagin中,选择war,web项目应该选择war 4. 点击finish后,基本项目结构就 ...

  5. javascript中的原型继承

    在Javascript面向对象编程中,原型继承不仅是一个重点也是一个不容易掌握的点.在本文中,我们将对Javascript中的原型继承进行一些探索. 基本形式 我们先来看下面一段代码: <cod ...

  6. javactript关闭窗体,刷新父窗体

    //关闭,父窗口弹出对话框,子窗口直接关闭this.Response.Write("<script language=javascript>window.close();< ...

  7. 为什么无论你怎么设置自定义的外层div的高度,easyui的动态添加的tab的高度还是不变高

    由以下代码可知,easyui自动将panel的height设置为了固定的150px高度!

  8. springmvc配置首页的方式

    <mvc:view-controller path="/" view-name="redirect:/user/loginUI" />

  9. openssl使用+Demo

    1. websiteSSL(secure Socket Layer)TLS(transport Layer Security) - SSL3.0基础之上提出的安全通信标准,目前版本是1.0openss ...

  10. POJ 3186 Treats for the Cows

    简单DP dp[i][j]表示的是i到j这段区间获得的a[i]*(j-i)+... ...+a[j-1]*(n-1)+a[j]*n最大值 那么[i,j]这个区间的最大值肯定是由[i+1,j]与[i,j ...