线程的生命周期

1.线程的生命周期
线程是一个动态执行的过程,它也有一个从产生到死亡的过程。

(1)生命周期的五种状态

新建(new Thread)
当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。
例如:Thread  t1=new Thread();

就绪(runnable)
线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。例如:t1.start();

运行(running)
线程获得CPU资源正在执行任务(run()方法),此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。

死亡(dead)
当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行。

自然终止:正常运行run()方法后终止

异常终止:调用stop()方法让一个线程终止运行

堵塞(blocked)
由于某种原因导致正在运行的线程让出CPU并暂停自己的执行,即进入堵塞状态。

正在睡眠:用sleep(long t) 方法可使线程进入睡眠方式。一个睡眠着的线程在指定的时间过去可进入就绪状态。

正在等待:调用wait()方法。(调用motify()方法回到就绪状态)

被另一个线程所阻塞:调用suspend()方法。(调用resume()方法恢复)

2.常用方法

void run()   创建该类的子类时必须实现的方法

void start() 开启线程的方法

static void sleep(long t) 释放CPU的执行权,不释放锁

static void sleep(long millis,int nanos)

final void wait()释放CPU的执行权,释放锁

final void notify()

static void yied()可以对当前线程进行临时暂停(让线程将资源释放出来)

3.(1)结束线程原理:就是让run方法结束。而run方法中通常会定义循环结构,所以只要控制住循环即可

(2)方法----可以boolean标记的形式完成,只要在某一情况下将标记改变,让循环停止即可让线程结束

(3)public final void join()//让线程加入执行,执行某一线程join方法的线程会被冻结,等待某一线程执行结束,该线程才会恢复到可运行状态

4. 临界资源:多个线程间共享的数据称为临界资源

a.每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。

b.Java对象默认是可以被多个线程共用的,只是在需要时才启动“互斥锁”机制,成为专用对象。

c.关键字synchronized用来与对象的互斥锁联系

d.当某个对象用synchronized修饰时,表明该对象已启动“互斥锁”机制,在任一时刻只能由一个线程访问,即使该线程出现堵塞,该对象的被锁定状态也不会解除,其他线程任不能访问该对象。

转载于:https://blog.51cto.com/shaotao/1268723

java -- 线程的生命周期相关推荐

  1. java线程的生命周期及wait(),notify(),notifyAll()的详解分析

    1.java线程的生命周期     线程是一个动态执行的过程,它也有一个从产生到死亡的过程. (1)生命周期的五种状态 新建(new Thread)     当创建Thread类的一个实例(对象)时, ...

  2. 《Java 并发编程实战》—— Java线程的生命周期

    09 | Java线程的生命周期 通用的线程生命周期:初始状态.可运行状态.运行状态.休眠状态和终止状态. 初始状态,指的是线程已经被创建,但是还不允许分配 CPU 执行.这个状态属于编程语言特有的, ...

  3. 图解 Java 线程的生命周期,看完再也不怕面试官问了

    文章首发自个人微信公众号: 小哈学Java www.exception.site/java-concur- 在 Java 初中级面试中,关于线程的生命周期可以说是常客了.本文就针对这个问题,通过图文并 ...

  4. java线程6种状态转换,Java线程的生命周期和各种状态转换详解

    在Java中,任何对象都有生命周期,线程也不例外,它也有自己的生命周期.当Thread对象创建完成时,线程的生命周期便开始了,当线程任务中代码正常执行完毕或者线程抛出一个未捕获的异常(Exceptio ...

  5. Java—线程的生命周期及线程控制方法详解

    关注微信公众号:CodingTechWork,一起学习进步. 线程生命周期5种状态 介绍   线程的生命周期经过新建(New).就绪(Runnable).运行(Running).阻塞(Bolocked ...

  6. Java线程的生命周期及线程的几种状态

    线程也具有生命周期,主要包括 7 种状态: 出生状态. 就绪状态. 运行状态. 等待状态. 休眠状态. 阻塞状态. 死亡状态, 下面对线程生命周期中的 7 种状态做说明. 出生状态:用户在创建线程时所 ...

  7. JAVA线程的生命周期以及5种状态转换

    一:线程的生命周期 新建状态(NEW):新创建一个线程对象. 就绪状态(RUNNABLE):线程对象创建后,调用该对象的start()方法.该状态的线程等待被线程调度选中,获取CPU的使用权. 运行状 ...

  8. Java 线程的生命周期

    当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死 ...

  9. 啃碎并发(二):Java线程的生命周期

    0 前言 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态.在线程的生命周期中,它要经过 新建(New).就绪(Runnable).运行(Running).阻塞(Bloc ...

最新文章

  1. char 转为 int 类型
  2. Android--表格布局
  3. python函数式编程思想_以python为例,浅谈函数式编程思想
  4. Linux 添加新用户账号并赋予root权限
  5. CodeForces 501B——Misha and Changing Handles
  6. (计算机组成原理)第二章数据的表示和运算-第一节2:BCD码
  7. TextScanner:旷视新作文字识别新突破,确保字符阅读顺序
  8. oracle 11g sga max,oracle 10g 11g中的SGA_MAX_SIZE与SGA_TARGET参数
  9. 一幅漫画趣味解读 Linux 内核
  10. 初次编译cximage遇到的一些错误
  11. Linux笔记:开机自动运行程序
  12. 厦门大学计算机专业录取分数线2019,2019厦门大学各省录取分数线是多少
  13. View中TouchSlop,VelocityTracker,GestureDetector
  14. android 公钥pem编码,如何将PEM编码的Elliptic Curve公钥加载到Bouncy Castle中?
  15. 如何快速配置OA、CRM、ERP等管理软件
  16. windows 01
  17. android paint style,Android 绘图基础三 paint使用
  18. 可见性剔除_使用分层遮挡贴图进行可见性剔除(6.实现与性能表现-2.性能表现)...
  19. python硬件编程语言_1 Python入门及计算机硬件知识
  20. 一个简单的Android木马病毒的分析

热门文章

  1. laravel Transformers中修改data键
  2. MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原
  3. 使用KiWi Syslog Daemon构建日志服务器
  4. 来做一做你是三国里的哪一个人物呢
  5. git常用命令和场景
  6. Activiti 6.x【6】StartEvent(上)
  7. 阿里巴巴公布第二财季报告,净利润同比增长71%
  8. 在通知栏上玩游戏,Steve iOS 游戏实现思路
  9. Quick-cocos2d-x3.3 Study (十五)--------- 为小鸟添加一个物理加速度
  10. Python标准库_ sys,random,time