监视和处理数据处理系统中相关线程事件的方法和设备.pdf

上传人:大师****2 文档编号:1056254 上传时间:2018-03-28 格式:PDF 页数:25 大小:1.05MB
返回 下载 相关 举报
摘要
申请专利号:

CN00118100.9

申请日:

2000.06.08

公开号:

CN1277387A

公开日:

2000.12.20

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||公开|||实质审查的生效申请日:2000.6.8

IPC分类号:

G06F11/22; G06F9/445

主分类号:

G06F11/22; G06F9/445

申请人:

国际商业机器公司;

发明人:

M·P·卡尔森; L·E·厄尔曼

地址:

美国纽约州

优先权:

1999.06.10 US 09/329,456

专利代理机构:

中国专利代理(香港)有限公司

代理人:

程天正;陈景峻

PDF下载: PDF下载
内容摘要

本发明提供了在数据处理系统中用于对多个相关线程进行监视的方法。对所述多个相关线程进行轮询以查找状态信息。作为对接收到了状态信息的响应,判断多个相关线程中的一个线程是否是现役的。作为对不能做出多个相关线程中的一个线程是现役的判断的响应,从而根据状态信息启动用于该线程的清除过程。

权利要求书

1: 一种在数据处理系统中对多个相关线程进行监视的方法,该方 法包括用所述数据处理系统实现的下列步骤: 轮询所述多个相关的线程查找状态信息; 作为对接收到了状态信息的响应,判断多个相关线程中的一个线程 是否是现役的;和 作为对不能做出多个相关线程中的一个线程是现役的判断的响应, 根据状态信息来启动用于该线程的清除过程。
2: 如权利要求1的方法,其特征在于,该方法还包括: 作为对接收到了状态信息的响应,将状态信息存储起来。
3: 如权利要求1的方法,其特征在于,所述轮询、判断和启动步 骤是由一个单个线程来执行的。
4: 如权利要求1的方法,其特征在于,所述单个线程是一第一类 的一部分。
5: 如权利要求1的方法,其特征在于,所述启动步骤包括: 识别所述多个相关线程中的现役线程; 识别所述多个相关线程中的非现役线程;以及 终止非现役线程。
6: 如权利要求1的方法,其特征在于,所述终止非现役线程的步 骤包括: 重置分配给所识别出的非现役线程的资源,从而可重新分配这些资 源。
7: 如权利要求1的方法,其特征在于,所述多个相关线程是多个 打印机线程。
8: 如权利要求1的方法,其特征在于,所述多个相关线程是多个 视频线程。
9: 如权利要求1的方法,其特征在于,所述方法是在虚拟机上实 现的。
10: 如权利要求9的方法,其特征在于,所述虚拟机是Java虚拟 机。
11: 一种在数据处理系统中对多个相关线程进行监视的方法,该方 法包括用所述数据处理系统实现的下列步骤: 轮询所述多个相关的线程查找状态信息; 作为对接收到了状态信息的响应,判断多个相关线程中的一个现役 线程中是否出错; 作为对多个相关线程中的一个线程因一事件而出现的不活动性的响 应,根据状态信息启动用于该线程的清除过程。
12: 如权利要求11的方法,其特征在于,所述事件是一段时间。
13: 如权利要求11的方法,其特征在于,所述事件是一错误。
14: 一种用于监视多个相关线程的数据处理系统,该数据处理系统 包括: 轮询装置,它用于轮询所述多个相关的线程以便查找状态信息; 判断装置,它响应于接收到了状态信息,判断多个相关线程中的一 个线程是否是现役的; 启动装置,它响应于不能做出多个相关线程中的一个线程是现役的 判断,根据状态信息启动用于该线程的清除过程。
15: 如权利要求14的数据处理系统,其特征在于,该系统还包括: 存储装置,它响应于接收到状态信息,对状态信息进行存储。
16: 如权利要求14的数据处理系统,其特征在于,所述轮询、判 断和启动装置是由一个单个线程来执行的。
17: 如权利要求14的数据处理系统,其特征在于,所述单个线程 是一第一类的一部分。
18: 如权利要求14的数据处理系统,其特征在于,所述启动装置 包括: 第一识别装置,它用于识别所述多个相关线程中的现役线程; 第二识别装置,它用于识别所述多个相关线程中的非现役线程;以 及 终止装置,它用于终止非现役线程。
19: 如权利要求14的数据处理系统,其特征在于,所述终止非现 役线程的装置包括: 重置装置,它用于重置分配给所识别出的非现役线程的资源,从而 可重新分配这些资源。
20: 如权利要求14的数据处理系统,其特征在于,所述多个相关 线程是多个打印机线程。
21: 如权利要求14的数据处理系统,其特征在于,所述多个相关 线程是多个视频线程。
22: 如权利要求14的数据处理系统,其特征在于,所述数据处理 系统是在虚拟机上实现的。
23: 如权利要求14的数据处理系统,其特征在于,所述虚拟机是 Java虚拟机。
24: 一种用于监视多个相关线程的数据处理系统,该数据处理系统 包括: 轮询装置,它用于轮询所述多个相关的线程以便查找状态信息; 判断装置,它响应于接收到了状态信息,判断多个相关线程中的一 个现役线程中是否出错; 启动装置,它响应于多个相关线程中的一个线程因一事件而出现的 不活动性,从而根据状态信息启动用于该线程的清除过程。
25: 如权利要求24的数据处理系统,其特征在于,所述事件是一 段时间。
26: 如权利要求24的数据处理系统,其特征在于,所述事件是一 错误。
27: 一种在计算机在可读介质中用于对多个相关线程进行监视的计 算机程序产品,该计算机程序产品包括: 第一指令,它们用于轮询所述多个相关的线程以便查找状态信息; 第二指令,它们响应于接收到了状态信息,判断多个相关线程中的 一个线程是否是现役的; 第三指令,它们响应于不能做出多个相关线程中的一个线程是现役 的判断,从而根据状态信息启动用于该线程的清除过程。
28: 一种在计算机在可读介质中用于对多个相关线程进行监视的计 算机程序产品,该计算机程序产品包括: 第一指令,它们用于轮询所述多个相关的线程以便查找状态信息; 第二指令,它们响应于接收到了状态信息,判断多个相关线程中的 一个现役线程中是否出错; 第三指令,它们响应多个相关线程中的一个线程因一事件而出现的 不活动性,从而根据状态信息启动用于该线程的清除过程。

说明书


监视和处理数据处理系统中 相关线程事件的方法和设备

    本发明涉及改进型的数据处理系统,具体地说,本发明涉及用于在数据处理系统中执行多任务的方法和设备。更具体地说,本发明涉及在数据处理系统中对用于多个相关线程的事件进行监视和处理的方法和设备。

    JavaTM是一种面向对象编程语言和侧重于将数据限定为对象及可作用于这些对象的方法的环境。Java仅支持单一的继承,这意味着在任何给定的时间每个类仅能从另一个类进行继承。Java还能创建称为接口的完全抽象的类,这就能限定这样的方法,这些方法可为若干个类所共享,而不必关心其它类正在如何处理该方法。Java提供了一种发布软件并扩展Web浏览器能力的机制,因为,程序员可编写小程序(applet)一次并且该小程序可在Web中任何支持Java的机器上运行。

    Java虚拟机(JVM)是仅驻留在存储器内的虚拟计算机组件。与仅能在对代码进行编译的的一个平台上运行相反,JVM使得Java程序能在不同的平台上执行。可为JVM编译Java程序。通过这种方式,Java可支持用于多种类型数据处理系统的应用程序,所述数据处理系统包含多种中央处理器和操作系统结构。假定存在有Java运行时间系统,为了能在不同类型的数据处理系统中执行Java应用程序,编译器一般要生成结构中立文件格式,即可在多个处理器上执行编译代码。Java编译器生成字节码指令,这些指令不是特定计算机结构专用的。字节码是由Java编译器生成的与机器无关地代码并且可由Java解释器来执行。Java解释器是JVM中的一个模块,它可交替地对字节码进行解释和执行。所述字节码指令设计成能在任何机器上很容易地加以解释并且能在解释中很容易地被翻译成本机代码。

    诸如从Sun Microsystem(Sun微系统公司)公司获得的Java开发套件工具(JDK)之类的开发环境可用于根据Java语言源代码和库来形成Java字节码。这种Java字节码可在Web服务器上被存储成Java应用程序或小程序,在所说的服务器上,上述Java应用程序或小程序可被通过网络下载至用户的机器并在本地JVM上执行。

    商用JavaOS是一种Java操作系统,它能在Java应用程序中执行Java字节码。与一般的客户机—服务器结构不同,商用JavaOS是靠网络来管理的客户程序,以便降低拥有者的成本,并且,能从大存储器、胖客户计算机缩减成小存储器的手持的或瘦客户机。商用JavaOS是用Java大规模实现的第一个操作系统。平台硬件专用功能仍在使用某些本机编译的代码,但是,很大百分比(约80-95%)的操作系统任务是用Java字节解释码来实现的。商用JavaOS具有独特的操作系统打印子系统,它完全是用Java代码实现的。因此,所述打印子系统可与诸如将数据发送给网卡或本地端口之类的低层平台专用的子系统相交互,但却抽象于低层交互(安装、初始化设备、软或硬数据出错、写/读重试等)。

    上述商用JavaOS中的打印子系统的一个问题是,打印子系统不能获得与事件有关的信息,这就会影响打印,因为,操作系统的其它部分不能执行操作系统事件(OSEvent)。某些子系统用OSEvent来传递诸如电源管理、靠服务器管理的运行时系统数据库数据、如声音存储媒体的设备、引导时的登录消息之类的状态变化。可用OSEvent生产器、消费器、计数器和缓存器来实现这种操作系统的消息传递。除上述问题以外,许多子系统都不能用OSEvent来传递状态的变化,需要在不知道网络、处理器或系统主板打印机连接件(并行、串行、USB(通用串行总线)等)的情况下用与平台无关的Java代码来保持实现上述打印子系统。

    因此,最好是具有一种对用于打印事件进行监视和处理的改进型方法及设备。

    一种在数据系统中用于监视多个相关线程的方法。通过轮询多个相关的线程以便查找状态信息。作为对接收到状态信息的响应,判断多个相关线程中的一个线程是否是现役的。作为对不能做出多个相关线程中的一个线程是现役的判断,根据状态信息来启动一个用于该线程的清除进程。

    后附权利要求说明了本发明的被认为是新颖的特征。通过参照附图对以下示意性实施例的详细说明,可以更好地理解本发明以及最佳应用方式、本发明的其它目的和优点,在附图中:

    图1是说明数据处理系统的图,在该数据处理系统中,依照本发明的最佳实施例实施了本发明;

    图2是一框图,它说明其中可实施本发明的数据处理系统;

    图3是如本发明上述最佳实施例的打印系统的框图;

    图4是一框图,它说明了本发明上述最佳实施例的打印代码在客户机内的位置;

    图5是说明本发明上述最佳实施例的打印作业流的图;

    图6是说明本发明上述最佳实施例的多作业结构的图;

    图7是用于对本发明上述最佳实施例的线程进行监视的进程的流程图;

    图8是说明本发明一个最佳实施例的存储状态信息的框图;

    图9是说明本发明一个最佳实施例的多打印作业系统的框图;

    图10是用于使如发明一个最佳实施例的多打印作业进行排队的流程图;以及

    图11是使本发明一个最佳实施例的多打印作业解除排队的流程图。

    参照附图并具体参照图1,依照本发明的一个最佳实施例,示出了其中可实施本发明的数据处理系统的图。在此示出了个人计算机100,它包括一系统装置110;一视频显示终端102;一键盘104;存储设备108,它们可包括软盘驱动器和其它类型的永久和可拆卸的存储介质;以及,鼠标106。个人计算机100内可包括其它的输入设备。可用诸如IBMAptiveTM之类的任何适当的计算机来实现个人计算机100,IBM AptiveTM是位于纽约Armonk的国际商用机器公司(IBM)的产品。尽管所示出的图显示出了个人计算机,但是,也可用诸如网络计算机、基于Web的电视机机顶盒、因特网设备之类的其它类型的数据处理系统来实现本发明的其它实施例。计算机100还最好包括图形用户界面,它可用在运行时驻留于计算机100中的计算机可读介质内的系统软件来加以实现。参照图2,框图说明了其中可实施本发明的数据处理系统。数据处理系统200是诸如图1的计算机100之类的计算机实例,其中,可放置实现本发明处理过程的代码或指令。数据处理系统200使用了外围部件互连(PCI)局部总线结构。尽管所示的实例使用了PCI总线,但也可使用微通道和ISA(工业标准系统结构)之类的其它总线结构。处理器202和主存储器204通过PCI桥208与PCI局部总线206相连。PCI桥208也可包括一用于处理器202的集成存储器控制器和高速缓冲存储器。可通过直接部件互连或者通过插入板进行与PCI局部总线206的其它连接。在所示的实施例中,局域网(LAN)适配器210、SCSI(小型计算机系统接口)主机总线适配器212和扩展总线接口214通过直接部件连接与PCI局部总线206相连。相反,音频适配器216、图形适配器218、音频/视频适配器219则通过插进扩展槽内的插入板与PCI局部总线206相连。扩展总线接口214为键盘和鼠标适配器220、调制解调器222和额外的存储器224提供连接。SCSI主机总线适配器212为硬盘驱动器226、磁带驱动器228以及CD-ROM驱动器230提供连接。一般的PCI局部总线装置可支持三个或四个PCI扩展槽或插入连接器。

    操作系统在处理器202中运行并用于协调数据处理系统200中的各个组件且对它们进行控制。所述操作系统可以是诸如OS/2之类的市售操作系统,OS/2可从国际商用机器公司买到。“OS/2”是国际商用机器公司的商标。诸如Java之类的面向对象编程系统可同上述操作系统一道运行并从在数据处理系统200中执行的Java程序或应用程序中调用操作系统。“Java”是Sun Microsystems公司的商标。用于上述操作系统即面向对象操作系统以及应用程序或程序的指令位于诸如硬盘驱动器226之类存储设备内并可被放进主存储器204内,以便由处理器202来执行。

    熟悉本技术领域的人员应注意,图2中的硬件可随上述实施形式而变。除图2的硬件以外,还可使用诸如闪存ROM(或等价非易失性存储器)或光盘驱动器等之类的其它硬件或外围设备,或者用它们来代替图2的硬件。还有,本发明的处理过程可适用于多处理器数据处理系统。

    例如,数据处理系统200若可任选地配置成网络计算机,则可不包括图2中虚线所示的表示可任选的SCSI主机总线适配器212、硬盘驱动器226以及CD-ROM驱动器236。在这种情况下,被合适地称为客户计算机的计算机必须包括诸如LAN适配器210、调制解调器222之类的某种类型的网络通信接口。作为另一个实例,无论数据处理系统200是否包括了某种类型的网络通信接口,处理数据处理系统200都可以是被配置成能在不依赖于某种类型网络通信接口的情况下来加以引导的独立系统。作为另一个实例,数据处理系统200可以是个人数字助理(PDA)设备,它配置有ROM和/或闪存ROM,以便为存储操作系统文件和/或用户生成的数据而提供非易失性存储器。

    图2所示的实例和上述实例并不意味着有结构上的限制。

    本发明提供了对用于一组相关线程的系统事件的回叫进行处理的方法、设备和指令,所述相关线程诸如是商用JavaOS的打印子系统中的线程。本发明包括一独立的监视器线程,它用于查看诸如用于打印文档的线程之类的线程执行进程。所述线程还被称为“工作器”(worker)线程。称为轻权进程(LWP)的线程是中央处理器(CPU)利用率的基本单位。一个线程一般包括一程序计数器、一寄存器组和一堆栈空间。一个线程与它的纯线程共享代码段、数据段和诸如开放文件和信号之类的被总称为任务的操作系统资源。多线程进程要比多个冗余进程使用更少的资源。结果,多线程会变得越来越通用。线程在许多方面按与进程相同的方式进行操作。一个线程可以有多种状态中的一种,所述多种状态例如包括准备、受阻、运行或中止。线程可共享CPU,并且,只有一个线程是现役的(运行)。进程内的线程可顺序地执行。

    监视器线程可用于检测本地打印硬件出故障的错误所导致的无限等待,但不能指示出故障。例如,在对打印硬件进行写操作时,打印硬件可能出故障。另外,在诸如远程LPR打印过程中进行的通信之类的单向通信中,可用监视器线程来检测到未响应的远程系统。

    本发明还提供了这样一种机制,它可在出现异常或出错时获得与线程状态有关的信息。通过这种辅助信息,提供了一种在出错事件或作业取消之后清除系统资源的机制。此外,还可从在执行过程中汇集的状态及其它信息中获得与线程有关的效率信息。通过使用多线程,商用JavaOS可从单打印作业扩展至排队的多打印作业系统。

    用一中心监视器线程来存储与各打印作业有关的线程并收集状态信息,而不是将事件或方法(即getStaus)包括进打印系统使用的不同部分内。具体地说,创建线程查看器监视器类,其中,用一线程来监视一组线程并处理不活动性大于一阈值的线程以及业已出现了异常或错误的线程。线程查看器类还包括检索线程状态的方法以及在产生超时时被调用的方法。检索线程状态的方法包括:Isdead、Isalive以及Istimedout。Java定义了java.lang.Thread类中被称为isalive的方法。在这一层次上,它不提供实际有用的信息。所述实施形式仅检查线程是否已经开始以及该线程是否还未失效。所述实施形式不能提供智能检测以查看线程是现役的。对这种特定的线程来说,所述方法可扩展成对问题“isalive”进行智能检测。在所示的实施形式中,可包括打印机,从而可对并行端口进行检查。并行端口可提供某些公用方法,它们可用于查看端口是否是现役的。通过从当前时间减去线程的起始时间并将其与在创建线程时设置的超时值相比较,可以实现方法IstimedOut。对Java中的Thread类来说,这目前并不是一种标准。方法getTimeAlive也不是Java线程类的一部分。这种方法是通过从当前时间中减去线程的起始时间来实现的。按每个线程或按类地设置一静态(总是可用的)清除类名存储器,它具有在出现超时被激活的方法。状态信息存储在字符串数据内,而创建线程的时间则存储在整型数据内。因超时或出错而要执行的动作存储在字符串数据内。

    目前Java操作系统中的PlatformPrintControl会创建并登记新类PrintTrafficManager、IntellentThreadWatcher和PrintJobsStuatusREntry。

    PrintJobsStuatusREntry分配来自诸如名称、来源、状态、用于各字符串数据的diskFileName、jobDescription设置者和获得者方法之类的作业信息的字符串数据。类打印通信管理器(PTM)启动现役的智能线程监视器、存储用于所有矢量数据的数据获得者和设置者方法并分配用于打印作业的矢量数据(打印作业排队情况)、用于线程的矢量数据(一组线程矢量阵列)。打印通信管理器还分配用于超时的矢量数据(一组各线程的超时值)、分配用于StartTime的矢量数据(一组各线程的开始时间)并(用在出错时进行调用的类属清除方法)启动静态Cleanup类。

    Cleanup类收集来自打印通信管理器的现役线程信息、清除僵尸线程(不活动但已被分配了的线程)、从出错状态中恢复(重置资源)并在出错时挂起/阻止不必要的工作(出错时清除发送线程)。智能线程监视器判断线程是否是运行的即getCurrentTime,判断线程是否已TimedOut,从打印通信管理器中获得Cleanup类的类名。线程查看器监视器类可存储成为要被用作一组线程的另一个类的一部分,所述另一个类与特定的进程有关。例如,可用一组线程来限定打印作业。

    参照图3,它示出了本发明一个最佳实施例的打印系统的框图。在所示出的实例中,本发明的进程是在Java操作系统中实现的。

    Java操作系统300包含有应用程序堆栈302。应用程序堆栈302包括:在商用OSEvent上执行的为操作系统提供GUI的Java软件应用程序;一因特网浏览器或与浏览器一道执行的小程序(例如HotJava、LotusNotes等)。应用程序堆栈302可将打印作业发送给PlatformPrintControl 304,PlatformPrintControl 304是Java中打印控制的与平台无关的实现形式,它可监视打印作业的创建和执行。应用程序堆栈302还可将图形数据发送给内容生成器306,内容生成器306包含能用打印专用语言来传递其内容的类,所述打印专用语言例如是但不局限于PostScript、PCL5或PCL3。

    打印图形用户界面308是图形用户界面(GUI),它能使得用户就各个打印作业的位置、质量和其它特征作出选择。在从任何类型的Windows系统中进行打印时都能显示出类似的GUI。这里所示出的组件包括通常能在商用Java OS中找到的组件,商用Java OS可从Sun Microsystems公司买到。在Java操作系统300中找到的还有PlatformPrintDialog310,它是用于处理与用户交互的对话框。这种对话框可通过打印图形用户界面308接收来自用户的交互。PlatformPrintJob特性312与打印系统中的其它对象相交互。Printerdatabase 314是Java操作系统300中的一个类,它可用作打印业务的中心注册点。

    JavaOS系统数据库(JSD)316具有用于用户、机器等的配置和注册信息。打印业务318是与打印业务的接口并可用于打印至与客户机、服务或网络中其它地方相连的多个打印机。例如,打印业务318可与本地打印机相连、使用线性打印机守护程序协议(LPD)或LPD流。Unix(tm)操作系统的伯克利版本能使行打印机的假脱机操作有一组程序:lpr(分配给队列)、lpq(显示队列)、lprm(清除队列)和lpc(控制队列)。这些程序与称为行打印机假脱机操作的自主进程相交互。商用Java OS也能用lpr协议将打印作业发送给一远程系统,该系统具有现役的lpd守护程序。商用Java OS可执行lpd守护程序,它能从一远程系统接收输入的lpr打印作业。在这一实例中,Java操作系统300还包括内容传送器320,它用于将内容传送至诸如本地并行端口或本地串行端口之类的不同位置。再有,内容传送器320还支持LPR和LPR流。在将任何数据发送至远程LPD守护程序之前,LPR协议需要将整个的打印机数据连同文件的整个长度存储进该文件。LPR流协议使得数据是“流式”的或者数据可被按较小的数据长度传送至远程流式lpd队列。流式具有更快速的优点,因为,在远程打印机上描绘作业并清除大文件(大型彩色打印机的分辨率能产生非常大的打印机数据文件)时,接收用打印机可处理命令。依照本发明的上述实施例,打印通信管理器322被包括在Java操作系统300内。打印通信管理器322可启动智能线程查看器监视器324。在所示的实例中,打印通信管理器322会开始进行现役智能线程监视。再有,打印通信管理器322可将自各个线程检索到的数据存储起来。这种组件会提供用于所有矢量数据的获取和设置方法。打印作业状态条目326是在打印的各个阶段将打印作业状态信息存储起来的地方。配置服务器328与Java操作系统300内的JSD316、打印业务接口318及内容传送器320相连。

    打印通信管理器322、智能线程查看器监视器324和打印作业状态条目326是被引入图3所示打印系统的新组件。

    参照图4,依照本发明的一个最佳实施例,示出了说明客户机内打印代码位置的框图。这一实例即客户机400包括打印管理器配置402,它用于向用户提供接口以改变或选择多个打印机特征。在JVM404内,用打印子系统406来为Java应用程序提供打印。用多个打印对话框408经由打印管理器配置402接收来自用户的输入。PrintJob类410提供用于监视打印作业的类。在所示的实例中,可在JDK工具箱中找到这种打印作业类。ContentProducers412用于从抽象视窗工具箱(AWT)将图形转换成打印机语言。AWT是一种这样的工具箱,它包含有基本窗口功能的原语并被包含在JVM内。这些原语包括诸如窗口和对话框控制、文本描绘、按钮、检查框及单选钮创建和控制之类的用户界面功能以及诸如画线、色彩选择等之类的图形原语。实际上,所有更为复杂的图形和用户接口工具都建立在这些AWT原语之上。

    在上述实例中,内容生产器412包括诸如传送器、PrintControl、Content Producers、Graphics、OutputStream、PrintJob、PrintService以及PrintJobStatusEntry之类的多个组件。内容生产器412创建打印机就诸数据以发送给打印子系统414。具体地说,将打印机就绪数据发送给打印子系统的用于本地端口或客户机可能与之相连的网络的系统(硬件)专用部分。通过这种方式,可将打印作业发送给打印机硬件416。发送打印机就绪数据是操作系统平台专用的。打印通信管理器418通过使用智能线程查看器监视器420来监视在内容生产器412中进行打印的多个线程。智能线程查看器监视器420是打印子系统406中设置的新组件。

    参照图5,依照本发明的一个最佳实施例,示出了说明打印作业流的图。在框500中,应用程序使用GetPrintJob,该GetPrintJob是用于在JVM中启动打印的方法。响应这一命令,JVM创建PlatformPrintControl、PlatformPrintDialog、PlatformPrintJob、PrinterDatabase(如果以前未创建的话)以及打印通信管理器(如果以前未创建的话)。打印通信管理器是一个新类,它可创建这样一个线程,在框502中,该线程用于对执行打印进程的其它线程的执行情况进行监视。在框504中,打印通信管理器启动这样一个线程查看器监视器,在本例中,该线程查看器监视器监视工作器线程1至N。在图5中,线程查看器监视器监视打印作业的不同阶段并将状态信息记录成打印作业进展情况。

    在框506中,创建打印作业状态条目以存储由工作器线程所处理的多个打印作业的状态。在框508中,将打印GUI显示给用户,这就能查询用于可用打印机的用户。在这一实例中,工作器线程1注册到打印通信管理器中的GUI。在框510内可看到这种状态,在其中,将用于工作器线程1的状态设置成等于GUI。PrintJobStatusEntry中的条目用于更新多个线程的状态变化。打印作业的这部分的潜在问题包括例如未安装打印机或不允许用户打印。如果出现了上述问题且工作器线程1变成不活动,则可利用记录在打印作业状态条目中的状态信息在线程中实行清除。

    在框512中,用户业已选择打印特定的文档,从而按用户的选择创建打印作业。向打印通信管理器注册一描绘线程。因此,在框512中,可将AWT图形表示成打印机语言命令。在这一实例中,将描绘线程标识为工作器线程2。将工作器线程2的状态设置等于框514中的描绘。打印进程这一部分中可能出现的某些潜在问题例如包括应用程序代码问题、缺少用于打印作业的磁盘空间或在打印作业是远程打印作业时对于服务器的读/写操作错误。

    然后,在框516中,根据用户对打印机的选择传送数据。所述选择例如可以是对本地打印机或网络打印机的选择。在本例中,在框516中用打印通信管理器来注册发送数据线程。工作器线程3是用发送数据线程所确定的工作器线程并在框518将其状态设置成等于openPrinter。用于工作器线程3的这种状态指示该线程正在启动与打印机的通信。

    对发送或发送数据来说的潜在问题包括:不能打开端口、打印机缺纸、打印机脱机或在打印作业是针对远程打印机的情况下网络关闭。

    在框520,将数据发送给打印机,并且,用打印通信管理器将发送数据线程注册为工作器线程4。此外,在框522中将该线程的状态设置成等于发送数据。将数据发送给打印机的潜在问题包括:读/写出错、端口超时、缓冲区溢出、打印机缺纸、打印机脱机、在打印作业是远程打印机的情况下网络关闭。如果完成了打印作业,将所述状态设置成等于作业结束,如框524所示。

    在框526中,在打印作业结束或在出错时清除存储器资源。在这种情况下,可删除其余的线程并将状态设置成等于已清除。清除部分包括:关闭输出流、打开的文件、存储器资源和端口句柄。此外,删除状态对话框。

    在所示的实例中,框526中的清除类型取决于对特定线程所存储的状态。以下是在清除中根据线程的状态所使用的不同方法的实例:对等于complete0K的状态来说,调用方法completeOKCleanup;对等于描绘的状态来说,调用方法renderCleanup;对等于openPrinter的状态来说,调用方法openPrinterCleanup;对等于sendData的状态来说,调用方法senddataCleanup;以及,对等于GUI的状态来说,调用方法GUICleanup。在本例中,如果状态不是以上列出的状态之一,就调用方法GenericStateCleanup。在清除之后,在框528中返回去执行应用程序。

    不管是完成了打印进程还是出现了错误,框524中的进程都会出现。在出现了错误的情况下,用特定线程的状态去标识删除线程和清除各种资源所必需的进程。在图5中,打印通信管理器在打印进程中从各线程中获得状态信息。线程的状态存储在PrintStatusEntry 506内。在所示的实例中,每个线程都执行打印作业的不同部分。另外,同一线程可执行打印作业的所有阶段,如图5所示。

    参照图6,依照本发明的一个最佳实施例,示出了说明多作业分配的图。在本例中,作业1-N插在打印通信管理器内。每个打印作业都被线程集合1-N中的单个工作器线程所注册。所述线程集合是在处理打印作业时所涉及到的那些线程。另外,在每个线程都执行打印作业的所有任务的情况下,每个作业都可被分配一不同的线程。通过这种方式,可以提供一种排队的多打印作业系统。

    参照图7,依照本发明的一个最佳实施例,示出了用于监视线程的过程的流程图。该过程是用智能线程查看器监视器来实现的。对图6所示线程之类的当前工作器线程库中的每个线程来说都执行上述过程。

    所述过程始于判断线程是否是运行的(步骤700)。如果线程是运行的,则判断是否己出现了ThreadTimedOut(步骤702)。如果尚未出现ThreadTimedOut,则使线程的计数值增1(步骤704),过程返回至步骤700。如果在步骤700中线程未运行或者在步骤702中出现了ThreadTimedOut,则获得线程N的线程状态数据(步骤706)。此后,从打印机通信管理器中获得清除类的类名(步骤708)。

    然后,根据从打印机通信管理器中获得的清除类的类名对线程N执行清除活动(步骤710)。根据线程的状态来执行上述清除活动。根据线程的状态来调用用于清除的方法。图5中的框526说明了可以调用的方法的实例。此后,将线程N的状态改变成完成了清除(步骤710),然后过程返回至步骤704。

    Java定义了java.lang.Thread类中被称为isalive的方法。在这一层次上,它不提供实际有用的信息。所述实施形式仅检查线程是否已经开始以及该线程是否还未失效。所述实施形式不能提供智能检测以查看线程是现役的。对这种特定的线程来说,所述方法可扩展成对问题“isalive”进行智能检测。在所示的实例中,可包括打印机,从而可对并行端口进行检查。并行端口可提供某些公用方法,它们可用于查看端口是否是现役的。

    通过从当前时间减去线程的起始时间并将其与在创建线程时设置的超时值相比较,可以实现方法IstimedOut。对Java中的Thread类来说,这目前并不是一种标准。方法getTimeAlive也不是Java线程类的一部分。这种方法是通过从当前时间中减去线程的起始时间来实现的。

    为了能适当地运行清除操作,清除线程必须知道工作器线程的状态。为了获得这种信息,清除线程使用PrintJobStatusEntry,随着打印作业的进展,PrintJobStatusEntry已被连续地更新。清除线程根据工作器线程的状态来采取适当的清除动作。

    清除动作随所述状态而变。如果工作器线程处于描绘状态,则清除线程负责清除存储器并确保控制权返回至用户应用程序。如果工作器线程处于将数据发送给打印机的过程,则清除线程则作上述操作并重置打印机。执行重置以确保将打印机重置成可再次接收打印作业的状态。最后,必须从被查看的线程库中删除工作器线程。

    一旦完成了清除,监视器线程就从打印作业通信管理器中删除打印作业和所有有关的工作器线程。这是用标准的java线程方法来做到的。最后,工作器线程退出,以指示JVM它已结束。

    参照图8,依照本发明的一个最佳实施例,示出了说明存诸状态信息的框图。在本例中,线程数据存储器800存储有用于各个线程的状态信息。线程数据存储器800是一个类的一部分,它包括set(设置)和get(获取)方法,以便存储和获得诸如时间、长度和名称之类的信息。时间和长度是整数数据,而名称则是字符串数据。本例中,在框802中,工作器线程1具有被设置成等于GUI的状态。将用于这种状态的起始时间和结束时间发送给线程数据存储器800。在框804中,工作器线程2具有被设置成等于描绘的状态。将用于这种特定状态的起始和结束时间发送给线程数据存储器800。在框806中工作器线程3具有openPrinter的状态,其中,将用于这种特定状态的起始和结束时间发送给线程数据存储器800。在框808将用于工作器线程4的状态sendData的起始和结束时间发送给线程数据存储器800。在框810中,printerInfo类将与打印作业有关的长度和名称数据发送给线程数据存储器800。JSD系统数据库还能将诸如缓冲区长度或打印机名称数据之类的属性提供给线程数据存储器800。

    参照图9,依照本发明的一个最佳实施例,示出了说明多打印作业系统的框图。在本例中,可同本发明的监视和事件处理系统一道来实现打印系统900。打印系统900包括一打印队列902以及一打印通信管理器904。打印系统900中可以有其它组件,但这些组件未作显示,以避免使本发明难以理解。在本例中,打印系统900中存在有打印作业906-912。打印作业状态条目914-920分别与打印作业906-912有关联。打印作业状态条目914、916和918指示:业已描绘了用于线程的打印作业并使它们排队。打印作业状态条目920指示线程正在发送一打印作业。

    在本例中,打印作业906是最后的打印作业,打印作业912是现役的打印作业。打印作业906由打印通信管理器904中的最后的线程来处理,打印作业912由打印通信管理器904中的第一个线程来处理。

    参照图10,依照本发明的一个最佳实施例,示出了用于使多打印作业排队的流程图。可在图9的打印系统900中实施图10的过程。

    所述过程始于用户开始打印作业(步骤1000)。在一用于打印作业的矢量队列中创建打印作业N(步骤1002)。此后,工作器线程将用于作业N的数据存储起来(步骤1004)。所述数据包括与本地假脱机程序、打印作业状态条目、内容生产器及与打印作业相关联的传送器有关的信息。所存储的数据包括作业名、打印作业目的地、打印机语言、分辨率、起始时间、超时值、用户名等。然后,将线程状态设置成等于已排队(步骤1006),然后所述过程结束。

    参照图11,依照本发明的一个最佳实施例,示出了用于使多打印作业解除排队的流程图。可在图9的打印系统900中实施图11的过程,以使打印作业解除排队或删除打印作业。

    所述过程始于判断是否有任何作业被存储进了队列矢量(步骤1100)。如果队列矢量中没有作业,则所述过程返回至步骤1100。如果队列矢量中存在有作业,则获得下一个作业即作业N(步骤1102)。然后,所述过程获得为作业N而存储的数据(步骤1104)。所获得的上述数据包括本地假脱机程序、打印作业状态条目、内容生产器及传送器。然后,打印所述作业(步骤1106)。将上述作业打印出来所涉及的步骤包括图5的框516和520中说明的步骤。

    此后,作业N结束并且从矢量队列中删除作业N(步骤1108),然后所述过程返回至前述步骤1100。

    重要的是注意到,尽管按全功能数据处理系统说明了本发明,但是,熟悉本技术领域的人员将会注意,本发明的过程能按指令的计算机可读介质的形式或多种形式来发布,并且,本发明可在与实际用于进行所述的发布的具体信号载体无关的情况下应用。计算机可读介质的实例包括诸如软盘、硬盘驱动器、RAM、CD-ROM之类的可记录型介质以及诸如数字和模拟通信线路之类的传输型介质。

    业已为说明和描述的目的提供了对本发明的说明,但是,这种说明并不是穷尽的或局限于所述形式的本发明。对于熟悉本技术领域的人员来说,可以看出多种改进形式和变化形式。尽管所示的实例说明了对打印作业进行处理,但本发明的过程也可应用于其它功能。例如,所述过程可应用于处理图形显示或文档检索。为了最好地说明本发明的原理、实际应用并且为了能使本技术领域的普通技术人员理解用于多种实施例的本发明以及可适用于预定的特殊用途的多种改进形式,选择并说明了上述实施例。

监视和处理数据处理系统中相关线程事件的方法和设备.pdf_第1页
第1页 / 共25页
监视和处理数据处理系统中相关线程事件的方法和设备.pdf_第2页
第2页 / 共25页
监视和处理数据处理系统中相关线程事件的方法和设备.pdf_第3页
第3页 / 共25页
点击查看更多>>
资源描述

《监视和处理数据处理系统中相关线程事件的方法和设备.pdf》由会员分享,可在线阅读,更多相关《监视和处理数据处理系统中相关线程事件的方法和设备.pdf(25页珍藏版)》请在专利查询网上搜索。

本发明提供了在数据处理系统中用于对多个相关线程进行监视的方法。对所述多个相关线程进行轮询以查找状态信息。作为对接收到了状态信息的响应,判断多个相关线程中的一个线程是否是现役的。作为对不能做出多个相关线程中的一个线程是现役的判断的响应,从而根据状态信息启动用于该线程的清除过程。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1