`
daoqidelv
  • 浏览: 28155 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

java中原子计数器AtomicInteger

阅读更多
最近在做单位电子账户系统,为应对可能发生的恶意流量攻击,对暴露在外的注册和登录交易加入了流量控制,以提高系统的安全性。

流量控制器的实现基于原子计数器AtomicInteger,这个类是线程安全的,在高并发下实现计数是相当有用的。

其实现原子计数的秘诀在于使用Unsafe从内存级别保证了数据的一致性,他会在做加减操作之前先读取该计数器对应内存位置的值,并同原值进行比较,如果相同则update成新值,这类似于数据库的乐观锁机制。这也被称为:CAS(Compare And Swap)。

Unsafe 这个类是用于执行低级别、不安全操作的方法集合。尽管这个类和所有的方法都是公开的(public),但是这个类的使用仍然受限,你无法在自己的java程序中直接使用该类,因为只有授信的代码才能获得该类的实例。

参考:http://aswang.iteye.com/blog/1741871
     
分享到:
评论

相关推荐

    用Java代码所写的简单计数器

    在本文中,我们将深入探讨如何使用Java编程语言创建一个简单的计数器应用,该应用能够处理投票过程,并最终以立方图的形式展示结果。这个计数器的主要目标是记录投票数据,然后通过图形化的方式直观地展示出来。 ...

    java计数器

    Java计数器是一种在编程中用于追踪特定事件发生次数或者状态变化的工具,尤其是在服务器端应用如Servlet中,计数器常被用来统计用户访问、页面加载等信息。Servlet是Java Web开发中的一个核心组件,它负责处理客户端...

    Java中对AtomicInteger和int值在多线程下递增操作的测试

    为了确保数据在并发访问时的正确性,Java提供了一系列的原子类,包括`AtomicInteger`,它为整数类型的变量提供了线程安全的更新操作。这个话题将深入探讨`AtomicInteger`与普通`int`变量在多线程环境下进行递增操作...

    Java线程安全的计数器简单实现代码示例

    Java线程安全的计数器简单实现代码示例是一种在Java中实现线程安全的计数器的方法,该方法使用AtomicInteger和volatile关键字来保证计数器的线程安全性。该计数器可以每天从1开始递增,隔天重置为1。 知识点1:...

    基于Java的动态站点中计数器的实现与解析.zip

    为了确保计数的准确性和并发安全性,Java提供synchronized关键字和java.util.concurrent包下的工具类,如AtomicInteger,来保证多线程环境下的计数操作不会出现数据不一致的问题。 再者,动态生成页面是动态网站的...

    java并发之AtomicInteger源码分析

    Java并发之AtomicInteger源码分析 AtomicInteger是Java并发包下面提供的原子类,主要操作的是int类型的整型,通过调用底层Unsafe的CAS等方法实现原子操作。下面是对AtomicInteger的源码分析。 1. 什么是原子操作...

    AtomicInteger 浅谈

    AtomicInteger是Java并发包java.util.concurrent.atomic中的一个类,提供了对单个整型变量进行原子操作的能力,避免了在多线程环境下使用synchronized关键字的复杂性和开销。本文将深入浅出地探讨AtomicInteger的...

    Java AtomicInteger类使用方法实例讲解

    Java AtomicInteger类使用方法实例讲解 Java AtomicInteger类是Java语言中的一种高效的原子操作类,主要用于在高并发环境下的高效程序处理。AtomicInteger类提供了一种线程安全的加减操作接口,能够帮助开发者简化...

    多线程 打印1-99,100-199

    根据实验需求,我们需要创建两个子线程,分别打印从 1 到 99 和从 100 到 199 的数字,并且这两个线程需要交替打印数字。 **3.1 创建打印线程** 首先,我们创建两个类 `Test1` 和 `Test2` 来代表两个子线程,它们...

    使用Java的Memory Model实现一个简单的计数器.txt

    ### 使用Java Memory Model实现一个简单的计数器 #### 一、引言 在并发编程领域,确保数据的一致性和安全性是至关重要的。Java为开发者提供了一系列工具和机制来解决这些问题,其中`AtomicInteger`就是一个非常...

    Java中的原子操作:深入探索AtomicInteger的实现与应用

    在Java的并发编程中,AtomicInteger 是一个非常重要的原子类,它提供了一种无锁的机制来保证整数操作的原子性。本文将详细介绍 AtomicInteger 的工作原理、使用方法以及如何在实际项目中应用它。 AtomicInteger 是...

    java 使用ConcurrentHashMap和计数器实现锁

    Java 使用 ConcurrentHashMap 和计数器实现锁 Java 使用 ConcurrentHashMap 和计数器实现锁是 Java 编程语言中的一种常见的锁机制实现方式。该机制主要通过使用 ConcurrentHashMap 和计数器来实现线程之间的同步和...

    Java AtomicInteger类的使用方法详解

    Java AtomicInteger类的使用方法详解 Java AtomicInteger类是Java中提供的一种原子操作的Integer类,通过线程安全的方式操作加减。它可以在高并发情况下使用,提供原子操作来进行Integer的使用。 Atomicinteger类...

    AtomicInteger并发测试

    测试java.util.concurrent.atomic.AtomicInteger的类 与直接使用int做区别

    java生成流水-格式202001270001

    总之,"java生成流水-格式202001270001"是一个涉及日期处理、线程安全计数器以及可能的持久化存储的Java编程任务。通过合理的设计和使用Java提供的并发工具类,可以实现高效且可靠的流水号生成器。

    Java虚拟机规范(Java SE 8版) 带书签

    5. **运行时数据区**:包括程序计数器、虚拟机栈、本地方法栈、Java堆和方法区。每个线程都有自己独立的程序计数器和虚拟机栈,而其他区域则是所有线程共享的。 6. **内存模型与并发**:Java内存模型(JMM)定义了...

    java 分页、批量删除

    Java 分页和批量删除是Web开发中的两个重要概念,尤其在大数据量的后台管理系统中,它们对于提升用户体验和优化数据库操作至关重要。以下是对这两个主题的详细讲解。 **分页** 分页是网页显示大量数据时常用的一种...

    Java 投票(自动加一)

    在Java编程领域,"投票(自动加一)"通常指的是实现一种计数器的功能,它能够在多线程环境下安全地增加计数值。这种功能在分布式系统、并发编程以及数据分析等场景中非常常见。当我们需要统计某种事件发生的次数时,...

    高级Java经典面试题2019

    #### Java中原子性操作 原子性操作是指在多线程环境下,操作要么全部完成,要么全部不完成,而不会被其他线程中断。Java提供了`java.util.concurrent.atomic`包下的原子变量类,如`AtomicInteger`,来实现原子性...

    毒爱计数器

    例如,在Java中,可以使用`synchronized`关键字或者`java.util.concurrent.atomic.AtomicInteger`类来实现线程安全的计数器。 此外,计数器类还可以与其他数据结构结合,如哈希表或队列,以实现更复杂的统计功能。...

Global site tag (gtag.js) - Google Analytics