CN106326016A - 一种多线程事件分发方法和系统 - Google Patents
一种多线程事件分发方法和系统 Download PDFInfo
- Publication number
- CN106326016A CN106326016A CN201610607261.9A CN201610607261A CN106326016A CN 106326016 A CN106326016 A CN 106326016A CN 201610607261 A CN201610607261 A CN 201610607261A CN 106326016 A CN106326016 A CN 106326016A
- Authority
- CN
- China
- Prior art keywords
- event
- client
- server
- module
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及数据处理领域,特别涉及一种多线程事件分发方法和系统。本发明的方法和系统在事件处理过程中,在服务器侧按照功能或者服务类别将事件划分为多种类型,针对每种类型采用独立的事件监听处理类进行处理,提高了事件处理的速度;同时在客户端侧也对事件进行模块化处理,并且有多个专门负责事件分发的线程进行处理,进一步提高了事件处理的速度。
Description
技术领域
本发明涉及数据处理领域,特别涉及一种多线程事件分发方法和系统。
背景技术
事件分发机制也基于Java的开发的系统中比较重要的一块。事件类型有很多种,例如设备的屏幕,接收到触摸的动作时,屏幕驱动把压力信号(包括压力大小,压力位置等)传递给系统底层,然后操作系统经过一系列的处理,把触摸事件一层一层的向上传递,最终事件会被准确的传递到产生事件的对象上,系统会遍历每一个View对象,然后计算触摸点在哪一个View中。在传统的基于计算机界面的C/S系统中,事件的触发一般由界面当中的一个按钮或者操作触发,发生该事件的时候,客户端会把该事件(如MouseLeftClick)捕获,交给事件监听器(如MouseClickListener),再由监听器执行对应的操作。在该类型的系统中,一个单独的事件基本上是没什么作用的,只有一个事件序列,才有意义。如触摸屏,一个事件序列正常情况下,定义为DOWN、MOVE(0或者多个)、UP/CANCEL。事件序列以DOWN事件开始,中间会有0或者多个MOVE事件,最后以UP事件或者CANCEL事件结束。现有技术的事件分发机制没有对事件进行分类,也不能采用独立的事件监听类对事件进行处理,因此处理速度慢、处理效率也不高。
发明内容
本发明提供了一种多线程事件分发方法和系统,解决了现有技术的事件分发机制处理速度慢、效率低的技术问题。
本发明解决上述技术问题的技术方案如下:一种多线程事件分发方法,包括以下步骤:
步骤1,通过客户端事件触发模块产生至少一个客户端事件;
步骤2,获取所述客户端事件,并按照预先定义的流程对所述客户端事件进行处理,并向客户端页面返回处理结果;当处理过程中需要向服务器请求数据时,将与所请求的数据相对应的预设事件发送给服务器;
步骤3,服务器获取所述预设事件,并选择与所述预设事件所属类别对应的事件监听处理类,按照所述预设事件的优先级顺序对所述预设事件进行处理,并向客户端页面返回处理结果。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,步骤1中,所述客户端事件包括通过客户端自带的AWT模块所触发的ActionEvent事件和通过客户端上自定义的ApplicationEvent模块所触发的自定义事件。
进一步,步骤2中,获取所述客户端事件并对所述客户端事件进行处理包括以下步骤:
通过ActionListener接口监听所述ActionEvent事件,并把监听到的ActionEvent事件传播给actionevent事件的监听器;
所述监听器接收actionevent事件,通过表单form的actionPerformed方法执行与所述actionevent事件对应的处理函数,并启动一个独立处理线程,所述独立处理线程通过调用Thread worker接口,对所述actionevent事件进行相应处理,直到所述actionevent事件处理完毕,线程终止。
进一步,所述独立处理线程通过调用Thread worker接口,调用表单的界面处理方法和/或表单的数据处理方法对所述actionevent事件进行相应处理,当处理过程中根据业务需要产生所述自定义事件时,执行表单的processApplicationEvent方法对所述自定义事件进行处理,直到所述自定义事件处理完成,线程终止。
进一步,所述步骤2中,当需要向服务器请求数据时,将与所请求的数据相对应的预设事件发送给对应的服务器具体为:
当需要向服务器请求数据时,通过客户端的第一模块管理类生成与所请求的数据相对应的预设事件,并将所请求数据封装在所述预设事件中,生成事件对象;所述客户端包括至少一个第一模块管理类;
对所述事件对象进行数据序列化,并通过socket通信的方式将序列化后的事件对象发送给连接服务器;
连接服务器接收所述事件对象,并判断所述事件对象是否与本连接服务器相关联,若是,则对所述事件对象进行处理;若否,则将所述事件对象存储在消息服务器中,等待其他应用服务器对所述事件对象进行读取。
进一步,步骤3中,连接服务器或者应用服务器通过消息监听线程持续监听所述事件对象,并通过ServerEventListener接口读取与本服务器相关联的事件对象。
进一步,步骤3中,连接服务器或应用服务器对获取的所述事件对象进行处理均包括以下步骤:
将所述事件对象按照功能类别或者服务类别进行分类,每个类别具有对应的事件监听处理类;
根据所述事件对象的优先级将所述事件对象存储到不同的优先级队列中;
按照优先级从高到低的顺序,通过事件分发线程将所述事件对象从所述优先级队列中取出,并调用对事件进行监听的所有监听者的ProcessServerEvent方法,选择对应的事件监听处理类对所述事件对象进行处理;所述事件监听处理类使用独立线程对所述事件对象进行处理;
所述事件监听处理类对所述事件对象处理完毕并获得所请求的数据后,通过socket通信的方式,将所请求的数据传送给客户端的第二模块管理类进行处理;或者所述事件监听处理类对所述事件对象处理完毕且生成了新的服务器事件时,将所述新的服务器事件传送到消息服务器,等待相关联的其他应用服务器进行读取,直到获得所请求的数据后,通过socket通信的方式,将所请求的数据传送给客户端的第二模块管理类进行处理;或者所述事件监听处理类对所述事件对象处理完毕且生成新的客户端事件时,采用socket通信的方式将所述客户端事件分发给对应的至少一个客户端。
为解决本发明的技术问题,还提供了一种多线程事件分发系统,包括消息服务器、连接服务器和至少一个客户端,所述客户端包括客户端事件触发模块、客户端事件监听模块、客户端事件处理模块和客户端事件请求模块,
所述客户端事件触发模块,用于产生至少一个客户端事件;
所述客户端事件监听模块,用于获取所述客户端事件;
所述客户端事件处理模块,用于按照预先定义的流程对所述客户端事件进行处理,并向客户端页面返回处理结果;
所述客户端事件请求模块,用于当处理过程中需要向应用服务器请求数据时,将与所请求的数据相对应的预设事件发送给连接服务器;
所述连接服务器用于接收所述预设事件,并判断所述预设事件是否与本服务器相关联,若是,则选择与所述预设事件所属类别对应的事件监听处理类,按照所述预设事件的优先级顺序对所述预设事件进行处理,并向客户端页面返回处理结果;若否,则将所述事件对象存储在消息服务器中,等待其他应用服务器进行读取。
进一步,所述客户端事件监听模块具体用于通过ActionListener接口监听所述ActionEvent事件,并把监听到的ActionEvent事件传播给所有的actionevent事件的监听器;
所述客户端事件处理模块具体用于通过监听器接收actionevent事件,并通过表单form的actionPerformed方法执行与所述actionevent事件对应的处理函数,并启动一个独立处理线程,所述独立处理线程通过调用Thread worker接口,对所述actionevent事件进行相应处理,直到所述actionevent事件处理完毕,线程终止;同时,当处理过程中需要向服务器请求数据时,将与所请求的数据相对应的预设事件发送给对应的服务器;
所述客户端事件请求模块具体用于当需要向连接服务器请求数据时,通过客户端的第一模块管理类生成与所请求的数据相对应的预设事件,并将所请求数据封装在所述预设事件中,生成事件对象;并对所述事件对象进行数据序列化后通过socket通信的方式将序列化后的事件对象发送给连接服务器。
进一步,所述连接服务器或应用服务器分别包括:
判断模块,用于判断所述预设事件是否与本服务器相关联;
服务器事件监听模块,用于通过消息监听线程持续监听所述事件对象,并通过ServerEventListener接口读取与本服务器相关联的事件对象;
分类模块,用于将所述事件对象按照功能类别或者服务类别进行分类,每个类别具有对应的事件监听处理类;
消息分发模块,用于根据所述事件对象的优先级将所述事件对象存储到不同的优先级队列中;
事件分发模块,用于按照优先级从高到低的顺序,通过事件分发线程将所述事件对象从所述优先级队列中取出,并调用对事件进行监听的所有监听者的ProcessServerEvent方法,选择对应的事件监听处理类对所述事件对象进行处理;所述事件监听处理类使用独立线程对所述事件对象进行处理;
事件处理模块,用于调用所述事件监听处理类,并使用独立线程对所述事件对象进行处理;所述事件监听处理类对所述事件对象处理完毕并获得所请求的数据后,通过socket通信的方式,将所请求的数据传送给客户端的第二模块管理类进行处理;或者所述事件监听处理类对所述事件对象处理完毕且生成了新的服务器事件时,将所述新的服务器事件传送到消息服务器,等待相关联的其他应用服务器进行读取,直到获得所请求的数据后,通过socket通信的方式,将所请求的数据传送给客户端的第二模块管理类进行处理;或者所述事件监听处理类对所述事件对象处理完毕且生成新的客户端事件时,采用socket通信的方式将所述客户端事件分发给对应的至少一个客户端。
本发明的有益效果是:本发明的方法和系统在事件处理过程中,在服务器侧按照功能或者服务类别将事件划分为多种类型,针对每种类型采用独立的事件监听处理类进行处理,提高了事件处理的速度;同时在客户端侧也对事件进行模块化处理,并且有多个专门负责事件分发的线程进行处理,进一步提高了事件处理的速度。
附图说明
图1为本发明一种多线程事件分发方法的流程示意图;
图2为本发明一种多线程事件分发系统的结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,为本发明一种多线程事件分发方法的流程示意图,包括以下步骤:
步骤1,通过客户端事件触发模块产生至少一个客户端事件;
步骤2,获取所述客户端事件,并按照预先定义的流程对所述客户端事件进行处理,并向客户端页面返回处理结果;当处理过程中需要向服务器请求数据时,将与所请求的数据相对应的预设事件发送给服务器;
步骤3,服务器获取所述预设事件,并选择与所述预设事件所属类别对应的事件监听处理类,按照所述预设事件的优先级顺序对所述预设事件进行处理,并向客户端页面返回处理结果。
以下通过“交易请求发起,发送到服务器端,服务器接受到该请求后,服务器的处理过程”作为例子对上述步骤进行说明。
步骤1,用户赵六通过客户端发送事件到服务器,具体为:
(1)用户赵六通过交易发起面板发起交易,交易内容包括交易ID为001,交易类型为即时回复,交易品种为钢材,交易限定时间为30分钟,交易价格为10万。
(2)AWT根据自身机制,生成ActionEvent。
(3)ActionEvent监听器通过DealPanel,监听到该交易事件,并调用actionPerformed方法。
(4)构造请求数据BuildRequest()后,启动一个新的ThreadWorker线程。所述新的ThreadWorker线程调用表单的数据处理方法(doCommonWork)向连接服务器请求数据,连接服务器接收请求事件“getGuestListEvent”,并在内存中读取数据,生成发送对象列表,然后将发送对象列表返回给ThreadWorker线程;本实施例中,发送对象列表中包括:张三、李四、王五三个人。
(5)ThreadWorker线程调用表单的界面处理方法(doAWTWork)将取得的发送对象列表返回给画面主线程,此时ThreadWorker线程结束。
(6)用户赵六的客户端取得ThreadWorker线程返回的发送对象列表,并弹出发起确认画面。
(7)用户赵六的客户端通过发起确认面板发起交易,并确认将步骤(1)中的交易内容发送到发送对象列表中的张三、李四、王五三个人。
(8)客户端的交易请求管理监听类(inquiryManager)调用函数submitInquiry(),生成交易请求事件(DealRequestEvent),将画面的请求数据封装在该交易请求事件中。具体为:
交易请求事件(Deal_Request)
事件名称:DealRequestAction
数据:交易请求事件(DealRequestEvent),其中包括交易ID,交易类型,交易限定时间,交易价格,发送对象列表等。
(9)通过Map将所述事件对象DealRequestEvent数据序列化,并通过socket通信函数(sendDataToServer)发送给服务器。
步骤2,服务器侧对事件对象进行处理,具体为:
(10)连接服务器接受到客户端事件,事件名称为DealRequestAction;数据为交易请求事件(DealRequestEvent)。
(11)由于本连接服务器不处理该事件(DealRequestAction),故将该事件消息发送到消息服务器中进行存储,并等待其他的应用服务器对该事件进行读取。
(12)此时,一个应用服务器AS的常驻消息服务器监听线程监听到该事件后,采用监听器InquiryManageListener处理该事件,具体为:
处理函数:performInquiryAction
处理事件名称:DealRequestAction
数据:交易请求事件(DealRequestEvent)。
(13)AS服务器中,将这条交易信息插入到数据库。在AS服务器中,根据该笔交易的交易ID:001,状态机ID:21,当前状态ID:14,当前操作:发起交易,找到该状态机的下一个状态信息。
(14)更新该笔交易的状态机流程信息后,生成新的服务器事件(DealRequestActionReply)。
(15)由于本AS服务器不处理该事件(DealRequestActionReply),故将该事件消息发送到消息服务器进行存储,并等待其他的连接服务器或者应用服务器进行读取。
(16)此时,连接服务器的常驻消息服务器监听线程监听到该事件(事件名称:DealRequestActionReply),并匹配该事件的分发对象列表,通过socket通信的方式分别向列表内的对象(张三、李四、王五)发送信息。
(17)交易请求管理监听类(inquiryManager)调用函数ReceiveInquiry(),进行弹窗处理,此时张三、李四、王五的客户端上分别出现弹窗,以张三为例,具体为:
交易请求接收面板
交易ID:001
交易类型:即时回复
交易品种:钢材
交易限定时间:30分钟
交易价格:10万
状态:议价回复中
发送方:赵六
接受方:张三。
如图2所示,为本发明一种多线程事件分发系统的结构示意图,包括消息服务器、连接服务器和至少一个客户端,所述客户端包括客户端事件触发模块、客户端事件监听模块、客户端事件处理模块和客户端事件请求模块,
所述客户端事件触发模块,用于产生至少一个客户端事件;
所述客户端事件监听模块,用于获取所述客户端事件;
所述客户端事件处理模块,用于按照预先定义的流程对所述客户端事件进行处理,并向客户端页面返回处理结果;
所述客户端事件请求模块,用于当处理过程中需要向应用服务器请求数据时,将与所请求的数据相对应的预设事件发送给连接服务器;
所述连接服务器用于接收所述预设事件,并判断所述预设事件是否与本服务器相关联,若是,则选择与所述预设事件所属类别对应的事件监听处理类,按照所述预设事件的优先级顺序对所述预设事件进行处理,并向客户端页面返回处理结果;若否,则将所述事件对象存储在消息服务器中,等待其他应用服务器进行读取。
本实施例中,所述客户端事件监听模块具体用于通过ActionListener接口监听所述ActionEvent事件,并把监听到的ActionEvent事件传播给所有的actionevent事件的监听器;
所述客户端事件处理模块具体用于通过监听器接收actionevent事件,并通过表单form的actionPerformed方法执行与所述actionevent事件对应的处理函数,并启动一个独立处理线程,所述独立处理线程通过调用Thread worker接口,对所述actionevent事件进行相应处理,直到所述actionevent事件处理完毕,线程终止;同时,当处理过程中需要向服务器请求数据时,将与所请求的数据相对应的预设事件发送给对应的服务器;
所述客户端事件请求模块具体用于当需要向连接服务器请求数据时,通过客户端的第一模块管理类生成与所请求的数据相对应的预设事件,并将所请求数据封装在所述预设事件中,生成事件对象;并对所述事件对象进行数据序列化后通过socket通信的方式将序列化后的事件对象发送给连接服务器。
本实施例中,所述连接服务器或应用服务器分别包括:
判断模块,用于判断所述预设事件是否与本服务器相关联;
服务器事件监听模块,用于通过消息监听线程持续监听所述事件对象,并通过ServerEventListener接口读取与本服务器相关联的事件对象;
分类模块,用于将所述事件对象按照功能类别或者服务类别进行分类,每个类别具有对应的事件监听处理类;
消息分发模块,用于根据所述事件对象的优先级将所述事件对象存储到不同的优先级队列中;
事件分发模块,用于按照优先级从高到低的顺序,通过事件分发线程将所述事件对象从所述优先级队列中取出,并调用对事件进行监听的所有监听者的ProcessServerEvent方法,选择对应的事件监听处理类对所述事件对象进行处理;所述事件监听处理类使用独立线程对所述事件对象进行处理;
事件处理模块,用于调用所述事件监听处理类,并使用独立线程对所述事件对象进行处理;所述事件监听处理类对所述事件对象处理完毕并获得所请求的数据后,通过socket通信的方式,将所请求的数据传送给客户端的第二模块管理类进行处理;或者所述事件监听处理类对所述事件对象处理完毕且生成了新的服务器事件时,将所述新的服务器事件传送到消息服务器,等待相关联的其他应用服务器进行读取,直到获得所请求的数据后,通过socket通信的方式,将所请求的数据传送给客户端的第二模块管理类进行处理;或者所述事件监听处理类对所述事件对象处理完毕且生成新的客户端事件时,采用socket通信的方式将所述客户端事件分发给对应的至少一个客户端。
本发明的一种多线程事件分发方法和系统,当客户端发生事件的时候,首先被传递到对应监听器(如MouserClickListener),处理该事件后,再生成一个新的应用程序事件ApplicationEvent,客户端监听到该事件的监听器ApplicationEventListener继续处理该事件,一级一级传递,直到最后传送到底层监听器,底层监听器再将该事件通过socket发送到服务器。服务器接受到事件后,会产生新的服务器事件ServerEvent,服务器事件监听器ServerListener监听到该事件后,会对所有的事件放到一个队列里面,通过专门的分发线程来进行分发处理。本发明的方法和系统在事件处理过程中,在服务器侧按照功能或者服务类别将事件划分为多种类型,针对每种类型采用独立的事件监听处理类进行处理,提高了事件处理的速度;同时在客户端侧也对事件进行模块化处理,并且有多个专门负责事件分发的线程进行处理,进一步提高了事件处理的速度。
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种多线程事件分发方法,其特征在于,包括以下步骤:
步骤1,通过客户端事件触发模块产生至少一个客户端事件;
步骤2,获取所述客户端事件,并按照预先定义的流程对所述客户端事件进行处理,并向客户端页面返回处理结果;当处理过程中需要向服务器请求数据时,将与所请求的数据相对应的预设事件发送给服务器;
步骤3,服务器获取所述预设事件,并选择与所述预设事件所属类别对应的事件监听处理类,按照所述预设事件的优先级顺序对所述预设事件进行处理,并向客户端页面返回处理结果。
2.根据权利要求1所述的一种多线程事件分发方法,其特征在于,步骤1中,所述客户端事件包括通过客户端自带的AWT模块所触发的ActionEvent事件和通过客户端上自定义的ApplicationEvent模块所触发的自定义事件。
3.根据权利要求2所述的一种多线程事件分发方法,其特征在于,步骤2中,获取所述客户端事件并对所述客户端事件进行处理包括以下步骤:
通过ActionListener接口监听所述ActionEvent事件,并把监听到的ActionEvent事件传播给actionevent事件的监听器;
所述监听器接收actionevent事件,通过表单form的actionPerformed方法执行与所述actionevent事件对应的处理函数,并启动一个独立处理线程,所述独立处理线程通过调用Thread worker接口,对所述actionevent事件进行相应处理,直到所述actionevent事件处理完毕,线程终止。
4.根据权利要求3所述的一种多线程事件分发方法,其特征在于,所述独立处理线程通过调用Thread worker接口,调用表单的界面处理方法和/或表单的数据处理方法对所述actionevent事件进行相应处理,当处理过程中根据业务需要产生所述自定义事件时,执行表单的processApplicationEvent方法对所述自定义事件进行处理,直到所述自定义事件处理完成,线程终止。
5.根据权利要求1~4任一所述的一种多线程事件分发方法,其特征在于,所述步骤2中,当需要向服务器请求数据时,将与所请求的数据相对应的预设事件发送给对应的服务器具体为:
当需要向服务器请求数据时,通过客户端的第一模块管理类生成与所请求的数据相对应的预设事件,并将所请求数据封装在所述预设事件中,生成事件对象;所述客户端包括至少一个第一模块管理类;
对所述事件对象进行数据序列化,并通过socket通信的方式将序列化后的事件对象发送给连接服务器;
连接服务器接收所述事件对象,并判断所述事件对象是否与本连接服务器相关联,若是,则对所述事件对象进行处理;若否,则将所述事件对象存储在消息服务器中,等待其他应用服务器对所述事件对象进行读取。
6.根据权利要求5所述的一种多线程事件分发方法,其特征在于,步骤3中,连接服务器或者应用服务器通过消息监听线程持续监听所述事件对象,并通过ServerEventListener接口读取与本服务器相关联的事件对象。
7.根据权利要求6所述的一种多线程事件分发方法,其特征在于,步骤3中,连接服务器或应用服务器对获取的所述事件对象进行处理均包括以下步骤:
将所述事件对象按照功能类别或者服务类别进行分类,每个类别具有对应的事件监听处理类;
根据所述事件对象的优先级将所述事件对象存储到不同的优先级队列中;
按照优先级从高到低的顺序,通过事件分发线程将所述事件对象从所述优先级队列中取出,并调用对事件进行监听的所有监听者的ProcessServerEvent方法,选择对应的事件监听处理类对所述事件对象进行处理;所述事件监听处理类使用独立线程对所述事件对象进行处理;
所述事件监听处理类对所述事件对象处理完毕并获得所请求的数据后,通过socket通信的方式,将所请求的数据传送给客户端的第二模块管理类进行处理;或者所述事件监听处理类对所述事件对象处理完毕且生成了新的服务器事件时,将所述新的服务器事件传送到消息服务器,等待相关联的其他应用服务器进行读取,直到获得所请求的数据后,通过socket通信的方式,将所请求的数据传送给客户端的第二模块管理类进行处理;或者所述事件监听处理类对所述事件对象处理完毕且生成新的客户端事件时,采用socket通信的方式将所述客户端事件分发给对应的至少一个客户端。
8.一种多线程事件分发系统,其特征在于,包括消息服务器、连接服务器和至少一个客户端,所述客户端包括客户端事件触发模块、客户端事件监听模块、客户端事件处理模块和客户端事件请求模块,
所述客户端事件触发模块,用于产生至少一个客户端事件;
所述客户端事件监听模块,用于获取所述客户端事件;
所述客户端事件处理模块,用于按照预先定义的流程对所述客户端事件进行处理,并向客户端页面返回处理结果;
所述客户端事件请求模块,用于当处理过程中需要向应用服务器请求数据时,将与所请求的数据相对应的预设事件发送给连接服务器;
所述连接服务器用于接收所述预设事件,并判断所述预设事件是否与本服务器相关联,若是,则选择与所述预设事件所属类别对应的事件监听处理类,按照所述预设事件的优先级顺序对所述预设事件进行处理,并向客户端页面返回处理结果;若否,则将所述事件对象存储在消息服务器中,等待其他应用服务器进行读取。
9.根据权利要求8所述的一种多线程事件分发系统,其特征在于,所述客户端事件监听模块具体用于通过ActionListener接口监听所述ActionEvent事件,并把监听到的ActionEvent事件传播给所有的actionevent事件的监听器;
所述客户端事件处理模块具体用于通过监听器接收actionevent事件,并通过表单form的actionPerformed方法执行与所述actionevent事件对应的处理函数,并启动一个独立处理线程,所述独立处理线程通过调用Threadworker接口,对所述actionevent事件进行相应处理,直到所述actionevent事件处理完毕,线程终止;同时,当处理过程中需要向服务器请求数据时,将与所请求的数据相对应的预设事件发送给对应的服务器;
所述客户端事件请求模块具体用于当需要向连接服务器请求数据时,通过客户端的第一模块管理类生成与所请求的数据相对应的预设事件,并将所请求数据封装在所述预设事件中,生成事件对象;并对所述事件对象进行数据序列化后通过socket通信的方式将序列化后的事件对象发送给连接服务器。
10.根据权利要求9所述的一种多线程事件分发系统,其特征在于,所述连接服务器或应用服务器分别包括:
判断模块,用于判断所述预设事件是否与本服务器相关联;
服务器事件监听模块,用于通过消息监听线程持续监听所述事件对象,并通过ServerEventListener接口读取与本服务器相关联的事件对象;
分类模块,用于将所述事件对象按照功能类别或者服务类别进行分类,每个类别具有对应的事件监听处理类;
消息分发模块,用于根据所述事件对象的优先级将所述事件对象存储到不同的优先级队列中;
事件分发模块,用于按照优先级从高到低的顺序,通过事件分发线程将所述事件对象从所述优先级队列中取出,并调用对事件进行监听的所有监听者的ProcessServerEvent方法,选择对应的事件监听处理类对所述事件对象进行处理;所述事件监听处理类使用独立线程对所述事件对象进行处理;
事件处理模块,用于调用所述事件监听处理类,并使用独立线程对所述事件对象进行处理;所述事件监听处理类对所述事件对象处理完毕并获得所请求的数据后,通过socket通信的方式,将所请求的数据传送给客户端的第二模块管理类进行处理;或者所述事件监听处理类对所述事件对象处理完毕且生成了新的服务器事件时,将所述新的服务器事件传送到消息服务器,等待相关联的其他应用服务器进行读取,直到获得所请求的数据后,通过socket通信的方式,将所请求的数据传送给客户端的第二模块管理类进行处理;或者所述事件监听处理类对所述事件对象处理完毕且生成新的客户端事件时,采用socket通信的方式将所述客户端事件分发给对应的至少一个客户端。
Priority Applications (32)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610607261.9A CN106326016A (zh) | 2016-07-28 | 2016-07-28 | 一种多线程事件分发方法和系统 |
CN201611220361.2A CN107656784A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及装置和服务器 |
CN201611219350.2A CN107656780A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及系统 |
CN201611218394.3A CN107656819A (zh) | 2016-07-25 | 2016-12-26 | 一种业务流程的处理方法及相关系统 |
CN201611220334.5A CN107656782A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及系统 |
CN201611218348.3A CN107659546A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及装置和服务器 |
CN201611218383.5A CN107656801A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及系统 |
CN201611220292.5A CN107657501A (zh) | 2016-07-25 | 2016-12-26 | 一种数据实时更新的方法及相关装置和服务器 |
CN201611219329.2A CN107657420A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及系统 |
CN201611218388.8A CN107659547A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及装置和服务器 |
CN201611220358.0A CN107657518A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及相关装置和服务器 |
CN201611218372.7A CN107659605A (zh) | 2016-07-25 | 2016-12-26 | 一种票据交易的流程实现方法及相关系统 |
CN201611220338.3A CN107656783A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及系统 |
CN201611220354.2A CN107659549A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及装置和服务器 |
CN201611220307.8A CN107656824A (zh) | 2016-07-25 | 2016-12-26 | 一种业务流程的处理方法及相关装置和服务器 |
CN201611219280.0A CN107657419A (zh) | 2016-07-25 | 2016-12-26 | 一种业务流程的处理方法及相关装置和服务器 |
CN201611218389.2A CN107657530A (zh) | 2016-07-25 | 2016-12-26 | 一种业务流程的处理方法及系统 |
CN201611218386.9A CN107656818A (zh) | 2016-07-25 | 2016-12-26 | 一种票据交易的流程实现方法及相关系统 |
CN201611219300.4A CN107656820A (zh) | 2016-07-25 | 2016-12-26 | 一种业务流程的处理方法及相关装置和服务器 |
CN201611220337.9A CN107657532A (zh) | 2016-07-25 | 2016-12-26 | 一种业务流程的处理方法及系统 |
CN201611220330.7A CN107657531A (zh) | 2016-07-25 | 2016-12-26 | 一种业务流程的处理方法及系统 |
CN201611218373.1A CN107657517A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及相关装置和服务器 |
CN201611219323.5A CN107656777A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及系统 |
CN201611219331.XA CN107656779A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及相关系统 |
CN201611219367.8A CN107656823A (zh) | 2016-07-25 | 2016-12-26 | 一种业务流程的处理方法及相关系统 |
CN201611218380.1A CN107656808A (zh) | 2016-07-25 | 2016-12-26 | 一种票据交易的流程实现方法及相关系统 |
CN201611220322.2A CN107656809A (zh) | 2016-07-25 | 2016-12-26 | 一种票据交易的流程实现方法及相关系统 |
CN201611219325.4A CN107656778A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及系统 |
CN201611219315.0A CN107656821A (zh) | 2016-07-25 | 2016-12-26 | 一种业务流程的处理方法及相关装置和服务器 |
CN201611220324.1A CN107659548A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及装置和客户端 |
CN201611219359.3A CN107656822A (zh) | 2016-07-25 | 2016-12-26 | 一种业务流程的处理方法及相关系统 |
CN201611220312.9A CN107656781A (zh) | 2016-07-25 | 2016-12-26 | 一种基于事件的流程处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610607261.9A CN106326016A (zh) | 2016-07-28 | 2016-07-28 | 一种多线程事件分发方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106326016A true CN106326016A (zh) | 2017-01-11 |
Family
ID=57739699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610607261.9A Pending CN106326016A (zh) | 2016-07-25 | 2016-07-28 | 一种多线程事件分发方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106326016A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122239A (zh) * | 2017-04-28 | 2017-09-01 | 武汉票据交易中心有限公司 | 一种多线程事件分发方法和系统 |
CN107147620A (zh) * | 2017-04-19 | 2017-09-08 | 武汉票据交易中心有限公司 | 一种消息交互处理方法、客户端和服务端 |
CN107172134A (zh) * | 2017-04-28 | 2017-09-15 | 武汉票据交易中心有限公司 | 一种客户端事件处理系统及方法 |
CN107222550A (zh) * | 2017-06-23 | 2017-09-29 | 武汉票据交易中心有限公司 | 一种服务器集群处理系统及方法 |
CN107329841A (zh) * | 2017-06-15 | 2017-11-07 | 武汉票据交易中心有限公司 | 一种多人交互下的交易流程的实现方法和系统 |
CN107426281A (zh) * | 2017-04-28 | 2017-12-01 | 武汉票据交易中心有限公司 | 一种客户端事件和服务器事件的交互处理系统及方法 |
CN108958174A (zh) * | 2017-05-19 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 一种多类设备控制方法和系统 |
CN109144698A (zh) * | 2018-08-30 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 数据获取方法、事件分发器、设备、介质和无人车 |
CN109327726A (zh) * | 2018-09-30 | 2019-02-12 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的处理方法、装置、终端和存储介质 |
CN109376054A (zh) * | 2018-09-25 | 2019-02-22 | 广州虎牙信息科技有限公司 | 一种数据分发的方法、装置、终端设备及存储介质 |
CN109729410A (zh) * | 2018-12-29 | 2019-05-07 | 北京字节跳动网络技术有限公司 | 一种直播间交互事件处理方法、装置、设备及存储介质 |
CN110162391A (zh) * | 2019-05-27 | 2019-08-23 | 浪潮云信息技术有限公司 | 一种异步框架及其实现方法 |
CN111711669A (zh) * | 2020-05-29 | 2020-09-25 | 北京顺达同行科技有限公司 | 一种数据上传方法、装置、服务器及存储介质 |
CN114064264A (zh) * | 2021-09-16 | 2022-02-18 | 浪潮卓数大数据产业发展有限公司 | 基于实时通信的前端多线程渲染方法、装置及计算机介质 |
-
2016
- 2016-07-28 CN CN201610607261.9A patent/CN106326016A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107147620A (zh) * | 2017-04-19 | 2017-09-08 | 武汉票据交易中心有限公司 | 一种消息交互处理方法、客户端和服务端 |
CN107147620B (zh) * | 2017-04-19 | 2020-07-24 | 武汉聚风天下科技有限公司 | 一种消息交互处理方法、客户端和服务端 |
CN107172134A (zh) * | 2017-04-28 | 2017-09-15 | 武汉票据交易中心有限公司 | 一种客户端事件处理系统及方法 |
CN107122239A (zh) * | 2017-04-28 | 2017-09-01 | 武汉票据交易中心有限公司 | 一种多线程事件分发方法和系统 |
CN107426281A (zh) * | 2017-04-28 | 2017-12-01 | 武汉票据交易中心有限公司 | 一种客户端事件和服务器事件的交互处理系统及方法 |
CN108958174A (zh) * | 2017-05-19 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 一种多类设备控制方法和系统 |
CN107329841A (zh) * | 2017-06-15 | 2017-11-07 | 武汉票据交易中心有限公司 | 一种多人交互下的交易流程的实现方法和系统 |
CN107222550A (zh) * | 2017-06-23 | 2017-09-29 | 武汉票据交易中心有限公司 | 一种服务器集群处理系统及方法 |
CN109144698A (zh) * | 2018-08-30 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 数据获取方法、事件分发器、设备、介质和无人车 |
CN109144698B (zh) * | 2018-08-30 | 2021-04-27 | 百度在线网络技术(北京)有限公司 | 数据获取方法、事件分发器、设备、介质和无人车 |
CN109376054A (zh) * | 2018-09-25 | 2019-02-22 | 广州虎牙信息科技有限公司 | 一种数据分发的方法、装置、终端设备及存储介质 |
CN109376054B (zh) * | 2018-09-25 | 2023-02-28 | 广州虎牙信息科技有限公司 | 一种数据分发的方法、装置、终端设备及存储介质 |
CN109327726A (zh) * | 2018-09-30 | 2019-02-12 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的处理方法、装置、终端和存储介质 |
CN109729410A (zh) * | 2018-12-29 | 2019-05-07 | 北京字节跳动网络技术有限公司 | 一种直播间交互事件处理方法、装置、设备及存储介质 |
CN110162391A (zh) * | 2019-05-27 | 2019-08-23 | 浪潮云信息技术有限公司 | 一种异步框架及其实现方法 |
CN111711669A (zh) * | 2020-05-29 | 2020-09-25 | 北京顺达同行科技有限公司 | 一种数据上传方法、装置、服务器及存储介质 |
CN114064264A (zh) * | 2021-09-16 | 2022-02-18 | 浪潮卓数大数据产业发展有限公司 | 基于实时通信的前端多线程渲染方法、装置及计算机介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106326016A (zh) | 一种多线程事件分发方法和系统 | |
US11270273B2 (en) | Resources dispensing device and resources dispensing method | |
CN105809481B (zh) | 虚拟物品发送方法、接收方法、装置和系统 | |
CN106716417B (zh) | 一种信息查看的方法、装置和设备 | |
CN105530307B (zh) | 一种基于多关联设备的事件提醒方法及系统 | |
CN104980450B (zh) | 一种消息传递方法和系统及消息处理设备 | |
CN103414765B (zh) | 图形码中信息的分流方法、装置及系统 | |
CN109347934A (zh) | 消息推送方法和系统以及服务器、存储介质和电子装置 | |
CN109799938A (zh) | 控件显示管理方法、终端设备及计算机可读存储介质 | |
CN104283765B (zh) | 一种消息显示方法、装置及终端设备 | |
CN108200298A (zh) | 基于呼叫中心系统的呼叫方法及系统 | |
CN110555019B (zh) | 一种基于业务端的数据清洗方法 | |
US20100190476A1 (en) | System and method for establishing automated call back using a mobile communication device | |
CN107404540A (zh) | 数据的同步方法及装置 | |
CN107800897A (zh) | 派工任务分配方法和装置 | |
CN110503512A (zh) | 订单处理方法、装置、电子设备及存储介质 | |
CN106533897A (zh) | 一种判断即时通讯消息已读的方法及装置 | |
CN106921684A (zh) | 一种请求信息的处理方法和服务器 | |
CN103974216B (zh) | 一种信息处理方法及电子设备 | |
CN109324909A (zh) | 一种基于云服务的人脸比对服务系统及方法 | |
CN102957594A (zh) | 基于消息队列的消息处理方法、相关设备及系统 | |
EP2846564B1 (en) | Method and device for displaying messages | |
CN109617792A (zh) | 即时通讯系统及广播消息分发方法 | |
CN107122239A (zh) | 一种多线程事件分发方法和系统 | |
CN106921554A (zh) | 消息传输方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170111 |