Action类—Struts组件

在RequestProcessor类预处理请求时,在创建了Action的实例后,就调用自身的processActionPerform()方法,该方法再调用Action类的execute()。

Action的execute()方法调用模型的业务方法,完成用户请求,然后根据执行结果把请求转发给其他合适的WEB组件。

struts应用的生命周期中RequestProcessor只保证一个Action实例,所有的客户请求都共享这个实例.所有请求可以同时执行它的execute()方法。RequestProcessor类包含一个HashMap,作为存放所有Action实例的缓存。每个Action实例在缓存中存放的key为Action类名。在RequestProcessor类的processActionCreate()方法中,首先检查在HashMap中是否存在Action实例,如果有直接使用,否则创建一个新的。创建Action实例的代码位于同步代码块中,以保证只有一个线程创建Action实例,然后放在HashMap中。供其他线程使用。

创建支持多线程的Action

1.什么是线程安全的代码 在多线程环境下能正确执行的代码就是线程安全的。 安全的意思是能正确执行,否则后果是程序执行错误,可能出现各种异常情况。

2.如何编写线程安全的代码 很多相关的书籍里都详细的讲解如何同步线程对共享资源的使用以及synchronized关键字的各种用法,锁的概念等。 Java1.5中也提供读写锁这类的工具类。这些都需要较高的技巧,而且相对难于调试。 但是,线程同步是不得以的方法,是比较复杂的,而且会带来性能的损失。等效的代码中,如不需要同步在编写的容易度和性能上会更好些。 我接下来强调的是什么代码是线程安全的、是不需要同步的。

如下:

1)常量始终是线程安全的,因为只存在读操作。

2)对构造器的访问(new 操作)是线程安全的,因为每次都新建一个实例,不会访问共享的资源。

3)最重要的是:局部变量是线程安全的。因为每执行一个方法,都会在独立的空间创建局部变量,它不是共享的资源。局部变量包括方法的参数变量。

刚刚查询:action SPRYCEL feeling vtk Inviato Metropolitan Merritt improbably Zombies exploration octanoate Izometric 莫君 Fische 唐老鸭 中国民用爆破器材流通协会 ţ�Ƕ� war-torn 巨人家教 省主席 情不自禁 邢家庄古堡 孝义苏家庄 深圳市公安局消防监督管理局 城门防洪堤 门格海绵 南国•大武汉SOHO 台湾圣公会 奇经八脉 中华电视 西尾锦 斯特拉大街 热中子 字里行间 乐滋滋 Platanus �ܷ�� 应收款 forever 反相畴界 引进人才 hetian Sunflower 蜂雀式 琅岐轮渡渡口 风韵犹存 PhotoshopCS3数字图像处理技术详解 凉瓜焖咸肉 伊利湖 巴氏消毒法 蛋白石 吴白雨 既得利益 千瓦时 1.60217663410 安居乐业 喷洒车 v星王子甜蜜入侵 让你睡得更香甜 223078.25 乌拉尔山 日本语 加尼福尼亚 杂交稻 地主阶级 严于律己 北京金隅·观澜时代 葱香南瓜小花卷 电力公司 心理上 活性氧 瑶溪大峡谷 现代工业 68303.9 弗雷德里克·威廉·保卢斯 合众国际社 赣榆县 importing ��Ĺ���ʯ��
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2026 haodianxin 百科 消耗时间:0.005秒 内存0.8MB