`
498320858
  • 浏览: 392906 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2 action 同步锁 策略

 
阅读更多

1.action中的流程是这样的:

 

  • 1.查询数据库字段field值为a的记录是否存在
  • 2.若1存在,返回此记录,流程终止
  • 3.若1不存在,new 一个对象,并写入数据库,并返回此对象,流程终止

 

 

但是数据库必须保证数据库字段field的值在数据库中不能有重复。

 

 

2 如果不做任何处理,当并发量大的时候,由于查询和写入之间存在时间差,所以会出现数据库字段field的值在数据库中有重复,这就实现不了需求

 

3,如果在action中加同步锁,如何加才能达到效率和需求的平衡,不能锁定整个action吧?

 

 

问题分析:

 

由于读操作的结果会影响写操作,所以此处读操作以及写操作必须放置于一个事务中,并且此事务不能被干扰,此问题有两种解决方案:

1.在action中,此两步操作时锁定一个静态对象

2.在数据库中,对field做索引,并设定为关键字,不允许重复,那么有重复时会报告给前台,并提醒用户不能重复

 

 

分享到:
评论

相关推荐

    servlet与Struts action线程安全问题分析

    相比之下,Struts2采用每次请求创建新Action实例的策略,从而在一定程度上避免了线程安全问题,但这并不意味着开发者可以忽视线程安全,尤其是在配置或业务逻辑中使用全局或静态资源时。 **解决线程安全问题的策略*...

    Servlet、Struts、SpringMVC对于表单重复提交的解决方案

    4. **使用同步锁(synchronized)**:在Servlet处理请求的方法上添加`synchronized`关键字,确保同一时间只有一个请求被处理。 ### Struts Struts框架通过其ActionSupport类提供了一些内置机制来处理重复提交: 1...

    SSH框架面试题.pdf

    可以通过Spring的`<bean>`标签定义Bean,并通过Struts2的`<action>`标签中的`name`属性将其注入到Action中。此外,也可以使用Spring的`@Autowired`注解来进行依赖注入。 33. **在SSH框架中,如何配置一个数据源?*...

    JAVA考试面试题目精选

    - `Hashtable`的性能比`HashMap`低,因为它需要维护同步锁。 - `HashMap`在大多数情况下提供更好的性能。 4. **迭代器:** - `Hashtable`使用`Enumeration`接口来进行迭代。 - `HashMap`使用`Iterator`接口进行...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    最优化原理

    正确处理同步锁避免死锁现象发生。 3. **算法设计**:选择合适的数据结构和算法以达到最佳时间复杂度和空间复杂度。 ### Java中的应用 Java是一种跨平台的面向对象编程语言,在企业级应用开发中占有重要地位。最...

    ehcache缓存教程

    Struts是流行的MVC框架,Ehcache可以作为其拦截器,缓存Action的执行结果。通过配置Struts拦截器,可以实现请求级别的缓存,提高页面加载速度。 ### 配置Ehcache Ehcache的配置主要通过XML文件完成,包括定义缓存...

    java程序员ssh面试常见题

    - 如果确实需要在Action类中使用非final的静态成员变量,则需要对这些变量的操作进行同步处理,例如使用`synchronized`关键字或显式锁机制。 #### 2. MVC架构中的Struts是如何实现MVC模式的? - **知识点概述**:...

    Java教程文档

    可能还会涵盖Java并发编程,包括线程池、同步机制、锁和并发容器的使用。此外,可能会讨论一些Java库,如NIO(非阻塞I/O)和Lambda表达式,这些都是Java 8及更高版本的重要特性。 通过这些教程,学习者不仅可以掌握...

    上海快钱高级软件工程师面试题

    #### 三、Struts2框架中的Action处理 1. **Action定义**: - Struts2框架的核心组件之一,负责处理用户请求并返回响应。 - Action类通常实现了`com.opensymphony.xwork2.Action`接口或者继承了`ActionSupport`类...

    面试宝典已回答篇.pdf

    8. **Struts Filter与拦截器的区别**:Filter基于函数回调,与Servlet容器紧密关联,可处理所有请求,但无法访问Action上下文。Interceptor基于Java反射,不依赖Servlet容器,仅作用于Action请求,能访问Action上...

    面试宝典已回答篇.docx

    2. **排它锁与读写锁**:排它锁,也叫独占锁,确保同一时间只有一个线程可以访问资源。读写锁分为读锁和写锁,读锁可共享,允许多个线程同时读取,而写锁是独占的,获取写锁的线程会阻止其他所有线程的读写操作。 3...

    java自学之路num1

    性能优化,一级缓存,二级缓存,查询缓存,事务管理(悲观锁、乐观锁),以及OpenSessionInView和CurrentSession策略。 9. **Spring**:IoC(控制反转)和DI(依赖注入)的核心概念,Spring的架构,AOP(面向切面...

    全套Java、Android、HTML5前端视频教程

    - 同步机制:锁、volatile关键字。 - 并发工具类:CountDownLatch、CyclicBarrier。 - **Java——NIO** - NIO基本概念与应用场景。 - 文件通道、缓冲区使用。 - 选择器与多路复用原理。 - **最新Java9新特性...

    J2EE软件工程师必读书目.

    - 并发编程中的锁与同步技术 #### 4. Spring in Action中文版 - **书籍简介**:本书由Craig Walls与Ben Alex共同编写,旨在帮助开发者掌握Spring框架的核心功能和高级用法。内容覆盖了从基本配置到复杂集成的各种...

    java面试题

    - Struts2:了解Action、Interceptor和Result的概念,以及MVC设计模式的应用。 - Hibernate:理解ORM(对象关系映射),掌握HQL语言,熟悉实体管理和级联操作。 4. **高级Java**: - 泛型:理解其作用,能编写...

    Java开发工程师招聘面试题

    - Struts是基于MVC的Web框架,接收请求,通过ActionMapper定位Action,Action处理后返回结果,由DispatcherServlet解析并呈现视图。 16. Hibernate并发机制: - Hibernate通过乐观锁、悲观锁等机制处理并发问题,...

    30种java技术框架

    通过使用线程池、同步锁、条件变量等高级特性,可以有效地管理和控制线程的行为,提高系统的并发性能和响应速度。 #### 五、Java体系(编译与运行)结构 Java程序的生命周期包括编译阶段和运行阶段。编译阶段将源...

Global site tag (gtag.js) - Google Analytics