`
逆风的香1314
  • 浏览: 1438373 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

高并发时让某段代码只运行一次的方法

阅读更多
一个网友的问题。
在一个WEB工程中使用了 struts
现在有这么一个要求: 某个 Action 中的一段代码要在一个特定的时间(该特定时间是可以设置的)只执行一次.该段代码以外的代码每次都要执行.且该 Action 是被高并发访问的.所以我不能使用 :

synchronized (this) {
...
}

来进行同步.如果这样做了必然回导至访问的排队现象.
同时也不能使用 Timer (项目要求).

我提供的解决思路

在外面先判断
1 是否已经执行
2 如果没有执行,则判断是否满足条件
3 如果满足条件,则进入同步
4 进入同步后,再次判断是否已经执行,免得重复了
5 如果没有。则执行,然后设置已经执行标志
6 退出


这个是标准的同步的判断步骤,可以防止相同的任务被重复执行。

分享到:
评论

相关推荐

    Java高并发笔记.pdf

    **定义**:临界区是指程序中的某一代码段,它可以被多个线程访问,但在任意时刻只能由一个线程执行。临界区通常用于保护共享资源或数据结构,确保对共享资源的正确访问和一致性。 - **应用场景**:例如,一个共享...

    高可用高并发的一共 9 种技术架构解析.docx

    ### 高可用高并发的九种技术架构解析 #### 一、分层架构 分层架构是最常见的架构模式之一,它将系统沿着横向维度分割成若干个层次,每一层都有明确且简单的职责,通过上层对下层的依赖与调度形成一个整体。这种架构...

    Java经典编程300例源代码

    这些例子将展示如何根据特定条件执行代码,以及如何重复执行某段代码。例如,“数组排序”实例可能会使用Arrays类的sort()方法,展示如何对数组元素进行排序。 异常处理是Java编程中不可或缺的一部分。源代码可能...

    Java并发编程与高并发解决方案之并发容器(J.U.C).docx

    ### Java并发编程与高并发解决方案之并发容器(J.U.C) #### 并发容器J.U.C 在Java中,为了提供高性能、低延迟的并发数据结构,Java提供了多种并发容器类,这些类主要位于`java.util.concurrent`包内,通常被称为J.U...

    java试验题目及代码

    实验二可能涉及编写一段代码,根据特定条件执行不同的操作,或者使用循环处理一系列数据。 3. 异常处理:Java提供了异常处理机制,允许程序员捕获并处理运行时错误。实验三可能会设计一个任务,要求你在可能出现...

    Java基础 全套源代码

    1. **控制流**:如if条件语句、switch语句用于决定程序执行路径,for、while等循环结构用于重复执行某段代码。 2. **异常处理**:try-catch-finally结构用于捕获并处理运行时错误,保证程序的健壮性。 3. **函数...

    Java学习资料 Java练习代码 Java基础语法,日常代码练习

    2. **控制结构**:包括条件语句(if-else, switch-case)和循环语句(for, while, do-while),用于根据特定条件执行不同的代码块或重复执行某段代码。 3. **方法**:方法是Java中的功能模块,可以封装代码并重复...

    Java程序设计实用教程源代码

    - **控制结构**:包括if语句、switch语句、for循环、while循环等,用于根据条件执行不同代码路径或重复执行某段代码。 - **方法定义与调用**:Java的方法是代码组织的基本单元,源代码中会有各种功能的方法实现。 ...

    ios demo,dispatch_once,单例模式的应用

    `dispatch_once`函数用于确保在程序运行期间,某段代码只被执行一次,这在初始化全局变量或设置单例时非常有用。 `dispatch_once`的工作方式如下: ```swift static dispatch_once_t onceToken; dispatch_once(&...

    50个Java基础练习的题目分析及源代码

    这些是编写任何程序的基础,用于根据条件执行特定代码块或重复执行某段代码。 4. **方法(Method)**:Java中的方法是实现功能的代码块,可以被其他部分调用。学习如何定义、调用和重载方法是重要的技能。 5. **...

    某线上教育平台初始代码

    【某线上教育平台初始代码】是一个面向K12阶段(小学至高中)的在线教育软件或插件项目,主要使用Java编程语言进行开发。这个项目的源码被组织在一个名为“tianjixuetang-master”的压缩包中,暗示了这是一个主分支...

    Java代码实战

    这些结构使程序员能够根据特定条件执行不同的代码块,或者重复执行某段代码直到满足特定条件。此外,异常处理(try-catch-finally)用于捕获和处理程序运行时可能出现的错误,确保程序的健壮性。 Java提供了丰富的...

    net学习笔记及其他代码应用

    29.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。 public void test(int i) { lock(this) { if (i>10) { i--; test(i); } } } 答:不会发生死锁,(但...

    Java并发编程(学习笔记).xmind

    为了避免这种情况发生,需要让它们分别等待一段随机的时间 性能与可伸缩性 概念 运行速度(服务时间、延时) 处理能力(吞吐量、计算容量) 可伸缩性:当增加计算资源时,程序的处理能力变强 ...

    狼人杀项目工程代码.zip_O3M_shallowxi3_智能狼人杀系统_狼人杀_狼人杀oppo代码

    MySQL则是一款关系型数据库管理系统,用于存储玩家信息、游戏记录等大量数据,其强大的查询能力和稳定性确保了系统在高并发情况下的稳定运行。 在这个智能狼人杀系统中,前端与后端的通信通常通过HTTP或HTTPS协议...

    操作系统课件:Lecture6 进程的并发执行问题.ppt

    1. **并发执行的概念**:并发执行是指在一段时间内,多个程序或者进程在宏观上看似同时运行。这可以通过操作系统对进程或线程的调度实现,使得CPU在不同的任务之间快速切换,给用户带来并行执行的错觉。 2. **并发...

    StressMark压力测试程序

    5. 使用一台或多台高配置的测试计算机(多CPU,大内存),每台计算机上运行一套StressMark,每套StressMark模拟多个客户线程,以此测试服务程序在大压力情况下的响应能力,这一方法甚至可以测出服务程序支持的并发数...

    Java并发程序设计教程

    synchronized提供块级和方法级锁,确保同一时刻只有一个线程能访问特定代码段。volatile保证了线程间变量的可见性,但不保证原子性。 3. **线程通信**:Java提供了wait(), notify()和notifyAll()方法来进行线程间的...

    我自己做的c++题目,,c++代码,大一写的,,

    3. **控制结构**:包括条件语句(if-else,switch-case)和循环(for,while,do-while),用于根据条件执行不同的代码块或重复执行某段代码。 4. **函数**:函数是C++中的可重用代码块,可以接受参数并返回值。...

    Java并发编程实践-电子书-02章

    在Java中,可以使用`synchronized`关键字来声明方法或代码块,以确保在任何时候只有一个线程可以执行该代码段。此外,Java并发工具包(java.util.concurrent)提供了更高级的同步机制,如`ReentrantLock`、`...

Global site tag (gtag.js) - Google Analytics