仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1552|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:Java事务处置与发送

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:46:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。任什么时候候,按下键盘或鼠标的键就发生了事务。组件承受和处置事务的体例自JDK1.1以来都坚持稳定。Swing组件可以发生很多分歧种别的事务,包含那些在java.awt.event包和在javax.swing.event包中的事务。Swing新引进的那些事务种别常常是与特定Swing组件相干的。每个事务种别都是一个对象,它最少指了然事务的产生源,常常还带有别的动静,如该事务的种别、在事务产生前和产生后事务源形态的变更,等等。事务源年夜部分是一般的组件或模子(models,即MVC中的M,在今后的blog中大概会先容Swing组件的MVC布局)。别的的对象也大概发生事务。

要想收到事务发生的关照,我们必要在方针对象上注册事务监听器。事务监听器是恣意XXListener类或接口的详细完成(XX代指事务的范例)。XXListener是界说在java.awt.event、java.beans和javax.swing.event包中的类或接口。在每一个接口中最少界说了一个办法(method),该办法以对应的XXEvent作为参数。撑持发送XXEvent事务产生关照的类都须完成XXListener接口,同时供应响应的addXXListener()和removeXXListener()办法来注册和移除这些事务监听器,年夜部分的事务方针对象(target)都同意注册恣意多个事务监听器。一般撑持XXEvent的类都供应受回护的办法(protectedmethod)fireXX()来机关事务对象及将它送至事务处置器(eventhandler)举行处置。


javax.swing.event.EventListenerList类


EventListenerList是一个包括XXEvent/XXListener对(pairs)的阵列(数组)。JComponent及其派生类利用一个EventListenerList对象来保护其事务监听器。一切默许的模子(models)一样保护事务监听器和一个EventListenerList。当一个监听器被注册到一个Swing组件或模子(model)时,对应的事务的Class实例(用来标识事务种别)被增加至EventListenerList阵列,前面紧随该监听器自己(即一个XXEvent/XXListener对)。由于这些对是贮存在阵列而不是在可变的汇合(mutablecollection)中(出于对效力的思索),每次增加和移除城市挪用System.arrayCopy()来天生一个新的阵列。当收到事务时,阵列被遍历,事务就会被送至具有其范例的每个事务监听器。因为阵列是按XXEvent,XXListener,YYEvent,YYListener,...的体例分列的,某个事务种别的监听器老是紧随厥后。这类体例使得事务处置非常高效。为了线程平安,当从EventListenerList增加和移除监听器时,办法会见阵列必需同步。

JComponent界说了一个名为listenerList的受回护EventListListener属性,因此一切它的子类都承继了这个属性。Swing组件间接透过listenerList属性来办理其年夜部分事务监听器。


事务发送线程


事务监听器在事务发送线程(一个java.awt.EventDispatchThread类的实例)中承受并处置事务。一切的绘制和组件结构也被请求在此线程中产生。事务发送线程在AWT和Swing中具有优等的主要性,在使用中把持组件形态和显现的随时更新方面饰演着关头的脚色。

与此线程相干的是一个事务的FIFO(FirstInFirstOut,先辈先出)行列:体系事务行列(java.awt.EventQueue的一个实例)。跟一切的FIFO行列一样,体系事务行列也是被线性添补的。不管是更新组件属性,结构,或是从头绘制,每个哀求顺次运转事务处置代码。一切事务被顺次处置是为了不像某个组件的形态在它从头绘制的半途被不测改动如许的情形。晓得这一点后,我们就要制止在事务发送线程以外往发送事务。好比说,在另外一个线程中间接挪用fireXX()办法就是不平安的。我们同时也必需包管事务处置代码和绘制代码尽快地实行完,不然全部体系行列就会被堵塞,自愿守候某个事务被处置,从头绘制,或是结构终了,而我们的使用程序则像是被“解冻”或是得到呼应。
==============================================================================================
//ThankstoMatthewRobinsonandPavelVorobiev,Ph.DfortheirgreatbookSwing,thisarticleistranslatedform
//thisbook,1stedition.Youcanfindthesetextintheirbook(inEnglish)ofChapter2.
=================================================================================



要想收到事务发生的关照,我们必要在方针对象上注册事务监听器。事务监听器是恣意XXListener类或接口的详细完成(XX代指事务的范例)。XXListener是界说在java.awt.event、java.beans和javax.swing.event包中的类或接口。在每一个接口中最少界说了一个办法(method),该办法以对应的XXEvent作为参数。撑持发送XXEvent事务产生关照的类都须完成XXListener接口,同时供应响应的addXXListener()和removeXXListener()办法来注册和移除这些事务监听器,年夜部分的事务方针对象(target)都同意注册恣意多个事务监听器。一般撑持XXEvent的类都供应受回护的办法(protectedmethod)fireXX()来机关事务对象及将它送至事务处置器(eventhandler)举行处置。


javax.swing.event.EventListenerList类


EventListenerList是一个包括XXEvent/XXListener对(pairs)的阵列(数组)。JComponent及其派生类利用一个EventListenerList对象来保护其事务监听器。一切默许的模子(models)一样保护事务监听器和一个EventListenerList。当一个监听器被注册到一个Swing组件或模子(model)时,对应的事务的Class实例(用来标识事务种别)被增加至EventListenerList阵列,前面紧随该监听器自己(即一个XXEvent/XXListener对)。由于这些对是贮存在阵列而不是在可变的汇合(mutablecollection)中(出于对效力的思索),每次增加和移除城市挪用System.arrayCopy()来天生一个新的阵列。当收到事务时,阵列被遍历,事务就会被送至具有其范例的每个事务监听器。因为阵列是按XXEvent,XXListener,YYEvent,YYListener,...的体例分列的,某个事务种别的监听器老是紧随厥后。这类体例使得事务处置非常高效。为了线程平安,当从EventListenerList增加和移除监听器时,办法会见阵列必需同步。

JComponent界说了一个名为listenerList的受回护EventListListener属性,因此一切它的子类都承继了这个属性。Swing组件间接透过listenerList属性来办理其年夜部分事务监听器。


事务发送线程


事务监听器在事务发送线程(一个java.awt.EventDispatchThread类的实例)中承受并处置事务。一切的绘制和组件结构也被请求在此线程中产生。事务发送线程在AWT和Swing中具有优等的主要性,在使用中把持组件形态和显现的随时更新方面饰演着关头的脚色。

与此线程相干的是一个事务的FIFO(FirstInFirstOut,先辈先出)行列:体系事务行列(java.awt.EventQueue的一个实例)。跟一切的FIFO行列一样,体系事务行列也是被线性添补的。不管是更新组件属性,结构,或是从头绘制,每个哀求顺次运转事务处置代码。一切事务被顺次处置是为了不像某个组件的形态在它从头绘制的半途被不测改动如许的情形。晓得这一点后,我们就要制止在事务发送线程以外往发送事务。好比说,在另外一个线程中间接挪用fireXX()办法就是不平安的。我们同时也必需包管事务处置代码和绘制代码尽快地实行完,不然全部体系行列就会被堵塞,自愿守候某个事务被处置,从头绘制,或是结构终了,而我们的使用程序则像是被“解冻”或是得到呼应。
==============================================================================================
//ThankstoMatthewRobinsonandPavelVorobiev,Ph.DfortheirgreatbookSwing,thisarticleistranslatedform
//thisbook,1stedition.Youcanfindthesetextintheirbook(inEnglish)ofChapter2.
=================================================================================



要想收到事务发生的关照,我们必要在方针对象上注册事务监听器。事务监听器是恣意XXListener类或接口的详细完成(XX代指事务的范例)。XXListener是界说在java.awt.event、java.beans和javax.swing.event包中的类或接口。在每一个接口中最少界说了一个办法(method),该办法以对应的XXEvent作为参数。撑持发送XXEvent事务产生关照的类都须完成XXListener接口,同时供应响应的addXXListener()和removeXXListener()办法来注册和移除这些事务监听器,年夜部分的事务方针对象(target)都同意注册恣意多个事务监听器。一般撑持XXEvent的类都供应受回护的办法(protectedmethod)fireXX()来机关事务对象及将它送至事务处置器(eventhandler)举行处置。


javax.swing.event.EventListenerList类


EventListenerList是一个包括XXEvent/XXListener对(pairs)的阵列(数组)。JComponent及其派生类利用一个EventListenerList对象来保护其事务监听器。一切默许的模子(models)一样保护事务监听器和一个EventListenerList。当一个监听器被注册到一个Swing组件或模子(model)时,对应的事务的Class实例(用来标识事务种别)被增加至EventListenerList阵列,前面紧随该监听器自己(即一个XXEvent/XXListener对)。由于这些对是贮存在阵列而不是在可变的汇合(mutablecollection)中(出于对效力的思索),每次增加和移除城市挪用System.arrayCopy()来天生一个新的阵列。当收到事务时,阵列被遍历,事务就会被送至具有其范例的每个事务监听器。因为阵列是按XXEvent,XXListener,YYEvent,YYListener,...的体例分列的,某个事务种别的监听器老是紧随厥后。这类体例使得事务处置非常高效。为了线程平安,当从EventListenerList增加和移除监听器时,办法会见阵列必需同步。

JComponent界说了一个名为listenerList的受回护EventListListener属性,因此一切它的子类都承继了这个属性。Swing组件间接透过listenerList属性来办理其年夜部分事务监听器。


事务发送线程


事务监听器在事务发送线程(一个java.awt.EventDispatchThread类的实例)中承受并处置事务。一切的绘制和组件结构也被请求在此线程中产生。事务发送线程在AWT和Swing中具有优等的主要性,在使用中把持组件形态和显现的随时更新方面饰演着关头的脚色。

与此线程相干的是一个事务的FIFO(FirstInFirstOut,先辈先出)行列:体系事务行列(java.awt.EventQueue的一个实例)。跟一切的FIFO行列一样,体系事务行列也是被线性添补的。不管是更新组件属性,结构,或是从头绘制,每个哀求顺次运转事务处置代码。一切事务被顺次处置是为了不像某个组件的形态在它从头绘制的半途被不测改动如许的情形。晓得这一点后,我们就要制止在事务发送线程以外往发送事务。好比说,在另外一个线程中间接挪用fireXX()办法就是不平安的。我们同时也必需包管事务处置代码和绘制代码尽快地实行完,不然全部体系行列就会被堵塞,自愿守候某个事务被处置,从头绘制,或是结构终了,而我们的使用程序则像是被“解冻”或是得到呼应。
==============================================================================================
//ThankstoMatthewRobinsonandPavelVorobiev,Ph.DfortheirgreatbookSwing,thisarticleistranslatedform
//thisbook,1stedition.Youcanfindthesetextintheirbook(inEnglish)ofChapter2.
=================================================================================


JDK1.1以来都坚持稳定。Swing组件可以发生很多分歧种别的事务,包含那些在java.awt.event包和在javax.swing.event包中的事务。Swing新引进的那些事务种别常常是与特定Swing组件相干的。每个事务种别都是一个对象,它最少指了然事务的产生源,常常还带有别的动静,如该事务的种别、在事务产生前和产生后事务源形态的变更,等等。事务源年夜部分是一般的组件或模子(models,即MVC中的M,在今后的blog中大概会先容Swing组件的MVC布局)。别的的对象也大概发生事务。

要想收到事务发生的关照,我们必要在方针对象上注册事务监听器。事务监听器是恣意XXListener类或接口的详细完成(XX代指事务的范例)。XXListener是界说在java.awt.event、java.beans和javax.swing.event包中的类或接口。在每一个接口中最少界说了一个办法(method),该办法以对应的XXEvent作为参数。撑持发送XXEvent事务产生关照的类都须完成XXListener接口,同时供应响应的addXXListener()和removeXXListener()办法来注册和移除这些事务监听器,年夜部分的事务方针对象(target)都同意注册恣意多个事务监听器。一般撑持XXEvent的类都供应受回护的办法(protectedmethod)fireXX()来机关事务对象及将它送至事务处置器(eventhandler)举行处置。


javax.swing.event.EventListenerList类


EventListenerList是一个包括XXEvent/XXListener对(pairs)的阵列(数组)。JComponent及其派生类利用一个EventListenerList对象来保护其事务监听器。一切默许的模子(models)一样保护事务监听器和一个EventListenerList。当一个监听器被注册到一个Swing组件或模子(model)时,对应的事务的Class实例(用来标识事务种别)被增加至EventListenerList阵列,前面紧随该监听器自己(即一个XXEvent/XXListener对)。由于这些对是贮存在阵列而不是在可变的汇合(mutablecollection)中(出于对效力的思索),每次增加和移除城市挪用System.arrayCopy()来天生一个新的阵列。当收到事务时,阵列被遍历,事务就会被送至具有其范例的每个事务监听器。因为阵列是按XXEvent,XXListener,YYEvent,YYListener,...的体例分列的,某个事务种别的监听器老是紧随厥后。这类体例使得事务处置非常高效。为了线程平安,当从EventListenerList增加和移除监听器时,办法会见阵列必需同步。

JComponent界说了一个名为listenerList的受回护EventListListener属性,因此一切它的子类都承继了这个属性。Swing组件间接透过listenerList属性来办理其年夜部分事务监听器。


事务发送线程


事务监听器在事务发送线程(一个java.awt.EventDispatchThread类的实例)中承受并处置事务。一切的绘制和组件结构也被请求在此线程中产生。事务发送线程在AWT和Swing中具有优等的主要性,在使用中把持组件形态和显现的随时更新方面饰演着关头的脚色。

与此线程相干的是一个事务的FIFO(FirstInFirstOut,先辈先出)行列:体系事务行列(java.awt.EventQueue的一个实例)。跟一切的FIFO行列一样,体系事务行列也是被线性添补的。不管是更新组件属性,结构,或是从头绘制,每个哀求顺次运转事务处置代码。一切事务被顺次处置是为了不像某个组件的形态在它从头绘制的半途被不测改动如许的情形。晓得这一点后,我们就要制止在事务发送线程以外往发送事务。好比说,在另外一个线程中间接挪用fireXX()办法就是不平安的。我们同时也必需包管事务处置代码和绘制代码尽快地实行完,不然全部体系行列就会被堵塞,自愿守候某个事务被处置,从头绘制,或是结构终了,而我们的使用程序则像是被“解冻”或是得到呼应。
==============================================================================================
//ThankstoMatthewRobinsonandPavelVorobiev,Ph.DfortheirgreatbookSwing,thisarticleistranslatedform
//thisbook,1stedition.Youcanfindthesetextintheirbook(inEnglish)inChapter2.
=================================================================================

C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊
小魔女 该用户已被删除
沙发
发表于 2015-1-21 14:09:15 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
山那边是海 该用户已被删除
板凳
发表于 2015-1-30 19:45:39 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
精灵巫婆 该用户已被删除
地板
发表于 2015-2-2 18:10:39 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
活着的死人 该用户已被删除
5#
发表于 2015-2-8 03:56:38 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
若相依 该用户已被删除
6#
发表于 2015-2-24 03:58:19 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
蒙在股里 该用户已被删除
7#
发表于 2015-3-7 10:47:01 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
柔情似水 该用户已被删除
8#
发表于 2015-3-15 00:12:04 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
金色的骷髅 该用户已被删除
9#
发表于 2015-3-15 06:08:01 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
分手快乐 该用户已被删除
10#
发表于 2015-3-20 17:25:07 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
愤怒的大鸟 该用户已被删除
11#
发表于 2015-3-26 20:06:43 | 只看该作者
是一种使用者不需花费很多时间学习的语言
冷月葬花魂 该用户已被删除
12#
发表于 2015-4-10 17:52:58 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
飘灵儿 该用户已被删除
13#
发表于 2015-4-16 03:09:56 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
变相怪杰 该用户已被删除
14#
发表于 2015-4-21 22:12:47 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
灵魂腐蚀 该用户已被删除
15#
发表于 2015-4-24 05:25:19 | 只看该作者
是一种为 Internet发展的计算机语言
简单生活 该用户已被删除
16#
 楼主| 发表于 2015-4-26 13:02:13 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
谁可相欹 该用户已被删除
17#
发表于 2015-4-30 22:17:39 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
不帅 该用户已被删除
18#
发表于 2015-5-4 07:06:29 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
乐观 该用户已被删除
19#
发表于 2015-5-9 17:03:29 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
只想知道 该用户已被删除
20#
发表于 2015-5-9 17:34:26 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 02:35

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表