甚至最简单Applet也是由多个线程来完成在Java中,任何个Applet pa和update思路方法都是由AWT(Abstract Window Toolkit)绘图和事件处理线 程,而Applet 主要里程碑思路方法——init,start,stop和destory ——是由执行该Applet应用
单线程概念没有什么新地方,真正有趣是在个中同时使用多个线 程来完成区别任务某些地方用轻量进程(Lightweig ht Process)来代替线程 ,线程和真正进程相似性在于它们都是单顺序控制流然而线程被认为轻量是由于它运行于整个上下文内,能使用整个共有资源和环境
作为单顺序控制流,在运行内线程必须拥有些资源作为必要开销例如,必须有执行堆栈和计数器在线程内执行代码只在它上下文中起作用,因此某些地方用"执行上下文"来代替"线程"
2.线程属性
为了正确有效地使用线程,必须理解线程各个方面并了解Java 实时系统必须知道如何提供线程体、线程生命周期、实时系统如 何调度线程、线程组、什么是幽灵线程(Demo nThread)
(1)线程体
所有操作都发生在线程体中,在Java中线程体是从Thread类继承run思路方法,或实现Runnable接口类中run思路方法当线程产生并化后,实时系统它run思路方法run思路方法内代码实所产生线程行为,它是线程主要部分
(2)线程状态
附图表示了线程在它生命周期内任何时刻所能处状态以及引起状态改变思路方法这图并不是完整有限状态图,但基本概括了线程中比较感兴趣和普遍方面以下讨论有关线程生命周期以此为据
●新线程态(New Thread)
产生个Thread对象就生成个新线程当线程处于"新线程"状态时,仅仅是个空线程对象,它还没有分配到系统资源因此只能启动或终止它任何其他操作都会引发异常
●可运行态(Runnable)
start思路方法产生运行线程所必须资源,调度线程执行,并且线程run思路方法在这时线程处于可运行态该状态不称为运行态是这时线程并不总是直占用处理机特别是对于只有个处理机PC而言,任何时刻只能有个处于可运行态线程占用处理 机Java通过调度来实现多线程对处理机共享
●非运行态(Not Runnable)
当以下事件发生时,线程进入非运行态
①suspend思路方法被;
②sleep思路方法被;
③线程使用wait来等待条件变量;
④线程处于I/O等待
●死亡态(Dead)
当run思路方法返回,或别线程stop思路方法,线程进入死亡态 通常Applet使用它stop思路方法来终止它产生所有线程
(3)线程优先级
虽然我们说线程是并发运行然而事实常常并非如此正如前面谈到,当系统中只有个CPU时,以某种顺序在单CPU情况下执行多线程被称为调度(scheduling)Java采用是种简单、固定调度法,即固定优先级调度这种算法是根据处于可运行态线程相对优先级来实行调度当线程产生时,它继承原线程优先级在需要时可对优先级进行修改在任何时刻,如果有多条线程等待运行,系统选择优先级最高可运行线程运行只有当它停止、自动放弃、或由于某种原因成为非运行态低优先级线程才能运行如果两个线程具有相同优先级,它们将被交替地运行
="xspace-totlerecord">3="xspace-totlepages">1/3="xspace-current">123>
最新评论