线程 是 java 的一大特性,它可以是给定的指令序列、给定的方法中定义的变量或者一些共享数据(类一级的变量)。 在 java 中每个 线程 有自己的堆栈和程序计数器(pc),其中堆栈是用来跟踪 线程 的上下文(上下文是当 线程 执行到某处时,当前的局部变量的值),而程序计数器则用来跟踪当前 线程 正在执行的指令。
在通常情况下,一个 线程 不能访问另外一个 线程 的堆栈变量,而且这个 线程 必须处于如下状态之一:
1.排队状态(ready),在用户创建了一个 线程 以后,这个 线程 不会立即运行。当 线程 中的方法start()被调用时,这个 线程 就会进行排队状态,等待调度程序将它转入运行状态(running)。当一个进程被执行后它也可以进行排队状态。如果调度程序允许的话,通过调用方法yield()就可以将进程放入排队状态。
2.运行状态(running),当调度程序将cpu的运行时间分配给一个 线程 ,这个 线程 就进入了运行状态开始运行。
3.等待状态(waiting),很多原因都可以导致 线程 处于等待状态,例如 线程 执行过程中被暂停,或者是等待i/o请求的完成而进入等待状态。
在 java 中不同的 线程 具有不同的优先级,高优先级的 线程 可以安排在低优先级 线程 之前完成。如果多个 线程 具有相同的优先级, java 会在不同的 线程 之间切换运行。一个应用程序可以通过使用 线程 中的方法setpriority()来设置 线程 的优先级,使用方法getpriority()来获得一个 线程 的优先级。
线程 的生命周期
一个 线程 的的生命周期可以分成两阶段:生存(alive)周期和死亡(dead)周期,其中生存周期又包括运行状态(running)和等待状态(waiting)。当创建一个新 线程 后,这个 线程 就进入了排队状态(ready),当 线程 中的方法start()被调用时, 线程 就进入生存周期,这时它的方法isalive()始终返回真值,直至 线程 进入死亡状态。
线程 的实现
有两种方法可以实现 线程 ,一种是扩展 java .lang.thread类,另一种是通过 java .lang.runnable接口。
posted on 2008-04-27 12:39
Mr. Michael.Q 阅读(165)
评论(0) 编辑 收藏