黑马程序员_Java线程总结
来源:互联网 发布:摘花软件怎么使用 编辑:程序博客网 时间:2024/06/11 09:45
------------------------- android培训、java培训、期待与您交流! -------------------------
Java线程总结
线程的状态表示线程正在进行的活动以及在此时间段内所能完成的任务.线程有创建,可运行,运行中,阻塞,死亡五中状态.一个具有生命的线程,总是处于这五种状态之一:
1.创建状态
使用new运算符创建一个线程后,该线程仅仅是一个空对象,系统没有分配资源,称该线程处于创建状态(new thread)
2.可运行状态
使用start()方法启动一个线程后,系统为该线程分配了除CPU外的所需资源,使该线程处于可运行状态(Runnable)
3.运行中状态
Java运行系统通过调度选中一个Runnable的线程,使其占有CPU并转为运行中状态(Running).此时,系统真正执行线程的run()方法.
4.阻塞状态
一个正在运行的线程因某种原因不能继续运行时,进入阻塞状态(Blocked)
5.死亡状态
线程结束后是死亡状态(Dead)
同一时刻如果有多个线程处于可运行状态,则他们需要排队等待CPU资源.此时每个线程自动获得一个线程的优先级(priority),优先级的高低反映线程的重要或紧急程度.可运行状态的线程按优先级排队,线程调度依据优先级基础上的"先到先服务"原则.
线程调度管理器负责线程排队和CPU在线程间的分配,并由线程调度算法进行调度.当线程调度管理器选种某个线程时,该线程获得CPU资源而进入运行状态.
线程调度是先占式调度,即如果在当前线程执行过程中一个更高优先级的线程进入可运行状态,则这个线程立即被调度执行.先占式调度分为:独占式和分时方式.
独占方式下,当前执行线程将一直执行下去,直到执行完毕或由于某种原因主动放弃CPU,或CPU被一个更高优先级的线程抢占
分时方式下,当前运行线程获得一个时间片,时间到时,即使没有执行完也要让出CPU,进入可运行状态,等待下一个时间片的调度.系统选中其他可运行状态的线程执行
分时方式的系统使每个线程工作若干步,实现多线程同时运行
另外下面是线程的调度规则:
①如果两个或是两个以上的线程都修改一个对象,那么把执行修改的方法定义为被同步的(Synchronized),如果对象更新影响到只读方法,那么只度方法也应该定义为同步的
②如果一个线程必须等待一个对象状态发生变化,那么它应该在对象内部等待,而不是在外部等待,它可以调用一个被同步的方法,并让这个方法调用wait()
③每当一个方法改变某个对象的状态的时候,它应该调用notifyAll()方法,这给等待队列的线程提供机会来看一看执行环境是否已发生改变
④记住wait(),notify(),notifyAll()方法属于Object类,而不是Thread类,仔细检查看是否每次执行wait()方法都有相应的notify()或notifyAll()方法。
------------------------- android培训、java培训、期待与您交流! -------------------------
详细请查看:http://edu.csdn.net/heima
- 黑马程序员_Java线程总结
- 黑马程序员_Java线程
- 黑马程序员_java创建线程
- 黑马程序员_java之多线程
- 黑马程序员_java线程进阶
- 黑马程序员_java中的线程
- 黑马程序员_java线程进阶
- 黑马程序员_java中线程
- 黑马程序员_java 线程池
- 黑马程序员_java线程进阶
- 黑马程序员_JAVA之多线程
- 黑马程序员_java 线程池
- 黑马程序员_JAVA之多线程
- 黑马程序员_java面试总结
- 黑马程序员_Java异常总结
- 黑马程序员_java异常总结
- 黑马程序员_java反射总结
- 黑马程序员_java基础总结
- MongoDB管理与开发精要《红丸出品》4.8 删除记录
- MongoDB管理与开发精要《红丸出品》4.9常用工具集
- 区分nil Nil NULL和NSNill(Objective C语言)
- 嵌入式职业规划
- 多线程之7 -------线程锁与通信
- 黑马程序员_Java线程总结
- 五子棋AI设计——从门外到门内不得不说的事儿3
- Ubuntu 12.04 NFS安装
- 保护眼睛配置
- 程序员必读的30本书
- linux学习笔记
- linux死机故障经历
- 在Oracle数据库上安装testlink1.9
- 145句经典诗句