发明名称 Java操作系统中线程的实现和线程状态切换的方法
摘要 本发明公开了一种Java操作系统中线程的实现和线程状态切换的方法。在Java操作系统中的线程是进程中的一条执行路径,是系统进行处理器调度的基本单位,同一个进程中的所有线程共享进程获得的地址空间和资源,线程具有5个不同的状态并且可以在状态间进行高效切换,这可以使系统性能获得很大提高。本发明对嵌入式系统环境,尤其是面向嵌入式系统的Java操作系统,有重大意义。
申请公布号 CN1801101A 申请公布日期 2006.07.12
申请号 CN200610049137.1 申请日期 2006.01.17
申请人 浙江大学 发明人 陈天洲;戴鸿君;黄彧
分类号 G06F9/48(2006.01) 主分类号 G06F9/48(2006.01)
代理机构 杭州求是专利事务所有限公司 代理人 林怀禹
主权项 1、一种Java操作系统中线程的实现和线程状态切换的方法,其特征在于:每个进程内允许包含多个并行执行的路径就是多线程,Java操作系统中的线程是系统进行处理器调度的基本单位,同一个进程中的所有线程共享进程获得的地址空间和资源;一个线程具有:●一个线程执行状态,运行、就绪等状态●有一个受保护的线程上下文,当线程不运行时,用于存储现场信息●一个独立的程序指令计数器●一个执行堆栈●一个容纳局部变量的静态存储器多线程进程的组成包括线程和空间,空间是完成一个程序的运行所需占有和管理的内存空间,它封装了对进程的管理,包括对指令代码、全局数据和I/O状态数据等共享部分的管理,Java操作系统中的线程封装了并发,包括对CPU寄存器、执行栈和局部变量、过程调用参数、返回值等线程私有部分的管理,线程主动地访问空间;Java操作系统中的线程状态和状态切换,Java操作系统中的线程从产生到消失,可分5个状态:1)新建态线程在已被创建但尚未执行这段时间内,处于一个特殊的新建状态。这时,线程对象已被分配内存空间,其私有数据已被初始化,但该线程还未被调度。此时线程对象可通过start()方法调度,或者利用stop()方法杀死。新创建的线程一旦被调度,就将切换到就绪状态;2)就绪态线程的就绪状态,表示线程正等待处理器资源,随时可被调用执行,处于就绪状态的线程事实上已被调度,已经被放到某一队列等待执行。处于就绪状态的线程何时可真正执行,取决于线程优先级以及队列的当前状况,线程的优先级如果相同,将遵循“先来先服务”的调度原则;线程依据自身优先级进入等待对列的相应位置,某些系统线程具有最高优先级、这些最高优先级线程一旦进入就绪状态,将抢占当前正在执行的线程的处理器资源,当前线程只能重新在等待队列寻找自己的位置。某些具有最高优先级的线程执行完自己的任务之后,将调用sleep()、wait()、suspend()方法,睡眠一段时间,等待被某一事件唤醒。一旦被唤醒,这些线程就又开始抢占处理器资源。这些最高优先级线程通常被用来执行一些关键性任务,如屏幕显示;低优先级线程需等待更长的时间才能有机会运行,由于系统本身无法中止高优先级线程的执行,因此用到了优先级校高的线程对象,那么最好不时让这些线程放弃对处理器资源的控制权,以使其他线程能够有机会运行。3)运行态线程已经拥有了对处理器的控制权,其代码目前正在运行。这个线程将一直运行直到运行完毕,除非运行过程的控制权被一优先级更高的线程强占,线程在如下3种情形之下将释放对处理嚣的控制权:●主动或被动地释放对处理器资源的控制权,该线程必须再次进入等待队列,等待其他优先级高或相等线程执行完毕●睡眠一段确定的时间,不进入等待队列,这段确定的时间到期后,重新开始运行●等持某一事件唤醒自己;4)阻塞态暂时这个线程将无法进入就绪队列,处于堵塞状态的线程通常必须由某些事件才能唤醒。至于是何种事件,则取决于堵塞发生的原因,处于睡眠中的线程必须被堵塞一段固定的时间;被挂起、或处于消息等待状态的线程则必须由一外来事件唤醒;5)消亡态表示线程已退出运行状态,并且不再进入就绪队列,其中原因可能是线程已执行完毕且正常结束,也可能是该线程被另一线程所强行中断。
地址 310027浙江省杭州市西湖区浙大路38号