`
无量
  • 浏览: 1148471 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

解决并发下累计的问题

阅读更多
package com.tongbanjie.trade.test.base;

import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 测试并发累加
 * @author huangqun
 *
 */
public class TestConcurrentPlusPlus {

	public static int count = 0;
	
	public volatile static int volatileCount = 0;
	
	public static int synchronizedCount = 0;
	
	public static AtomicInteger atomicCount = new AtomicInteger(0);
	
	public volatile static AtomicInteger volatileAtomicCount = new AtomicInteger(0);
	
	public static void main(String[] args) {
		
		final Object lock = new Object();
		
		for (int i = 0; i < 50000; i++) {
			new Thread(new Runnable() {
				
				@Override
				public void run() {
					count++;
					volatileCount++;
					
					synchronized (lock) {
						synchronizedCount++;
					}
					
					atomicCount.incrementAndGet();
					volatileAtomicCount.incrementAndGet();
				}
			}).start();
		}
		
		// 休息5秒, 保证线程中的计算完成
		try {
			TimeUnit.SECONDS.sleep(5);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		System.out.println("线程并发执行对计数器累计5000次,看并发结果!");
		System.out.println("count=" + count);
		System.out.println("volatileCount=" + volatileCount);
		System.out.println("synchronizedCount=" + synchronizedCount);
		System.out.println("atomicCount=" + atomicCount.get());
		System.out.println("volatileAtomicCount=" + volatileAtomicCount.get());
		
	}
}

0
8
分享到:
评论
2 楼 无量 2016-05-04  
浅水明草 写道
楼主说一下这个在哪些场景可以使用

1. 高并发生成序列号 2. 并发计数器 3. 中间件 等很多场景要多这几个概念理解深入。这个只是写个demo,具体内容还没来的急写,接下来会完善这篇博客的
1 楼 浅水明草 2016-04-25  
楼主说一下这个在哪些场景可以使用

相关推荐

    常年累计整理各种后端面试八股文和技巧.zip

    "常年累计整理各种后端面试八股文和技巧.zip" 文件集包含了众多后端开发者在面试过程中可能遇到的经典问题和解答策略,旨在帮助求职者更好地准备面试,提高成功通过面试的概率。 【描述】: 面试经验分享 这份...

    AliSQL数据库最佳实践之路.pdf

    在应对大连接、高并发场景下的数据库稳定性问题时,AliSQL采用了高低水位限流策略。高水位限流是一种直接限制线程数量的粗暴方法,而低水位限流则更为精细化,能够更准确地控制数据库的负载。此外,针对库存热点问题...

    AliSQL 5.6及其应用 - 江疑

    通过以上改进,AliSQL 5.6不仅提高了数据库的并发处理能力,还解决了热点数据更新时的锁竞争问题,大大提升了在大规模分布式环境下的稳定性和性能表现。这些优化对于电商平台等需要处理大量并发请求的应用场景尤为...

    C语言高级编程及实例剖析(源代码)

    《C语言高级编程及实例剖析》是一本...通过阅读《C语言高级编程及实例剖析》并实践书中的源代码,学习者不仅可以深化对C语言的理解,还能锻炼解决问题的能力,为后续的系统编程、嵌入式开发或软件工程奠定坚实的基础。

    前缀和-03-主进程会等待所有的子进程执行完成以后再退出.ev4.rar

    前缀和是计算机科学中一种常见的算法技巧,尤其在数组处理和数据结构中扮演着重要角色。...通过学习,不仅可以掌握这两种技术,还能提高处理并发问题的能力,为解决复杂的计算问题打下坚实的基础。

    loadrunner的oracle计数器指标描述

    - **问题解决**:优化事务提交机制,确保系统能够在高并发环境下保持稳定运行。 ##### 6. **DBWRbuffersscanned (V$SESSTAT1/[SYS]/ABCDEF/ORACLE.EXE) (绝对)** - **定义**:记录了在扫描每个 LRU 集以查看是否有...

    使用JAVA内存数据库h2database性能优化

    数据库访问是这类问题的主要来源,特别是在处理高并发、实时计算和海量数据监控的情况下。例如,对于银行系统,可能需要实时处理成千上万的交易,避免死锁和性能下降,例如在电信系统的二次批价和实时累账,或者在...

    王宏-大众点评网Web开发之路

    在这一阶段,团队需要解决的主要问题是图片文件的快速增长所带来的IO负载问题、缓存管理问题以及数据库的高并发访问问题。 #### 技术实践与挑战 1. **动静分离**:为了提高页面加载速度和降低服务器压力,团队实施...

    MQTT开源消息服务介绍

    技术和产品方面,EMQTT项目本身采用了类似WhatsApp的设计架构,核心解决物联网服务器需要处理大量并发连接问题,是目前全球市场唯一一个真正单节点承载100万,集群承载到1000万线的开源项目。EMQTT项目实现完整协议...

    AliSQL数据库最佳实践之路.pptx

    - AliSQL提供了定向流量控制、高低水位限流,以应对大连接、高并发场景下的稳定性挑战。其中,高水位限流是一种暴力方式,当线程运行超过阈值时直接停止新请求,而低水位限流则更为精细,通过更合理的策略控制流量...

    ShopEX 4.8.5 二次开发之会员等级

    - 对于高并发场景下的压力测试尤为重要,确保系统在高峰期也能保持稳定。 5. **安全性问题** - 解决方案:加强数据加密技术的应用,使用HTTPS协议传输敏感信息。 - 定期对系统进行安全检查,及时修补已知漏洞。 ...

    IT公司笔试题算法部分.txt

    通过上述分析,我们可以看到递归算法在解决复杂问题时的强大能力,尤其是在字符串操作、数据结构遍历和数学问题求解等领域。掌握递归算法对于IT从业者来说至关重要,因为它能够帮助我们更高效地设计和实现算法解决...

    PeopleSoft.for.the.Oracle.DBA.2nd.Edition

    Oracle DBA将了解到各种性能指标的意义,学会使用Oracle提供的工具和技术来监控PeopleSoft应用的运行状态,从而及时发现并解决问题。 ### PeopleTools性能实用工具 第十章介绍了PeopleTools中的性能工具,这些工具...

    简单数据结构.pptx

    前缀和的计算方法可以用于解决一系列问题,例如动态规划、求解区间和等。此外,还可以扩展到异或前缀和和二维前缀和,这些在处理数组的异或操作和矩阵求和时非常有用。 接下来是链表,它是一种线性数据结构,由一...

    地理空间大数据创新技术及应用.pptx

    总结来说,地理空间大数据创新技术主要集中在数据的高效存储、快速检索和高性能计算上,通过云计算和分布式计算等先进技术,解决海量数据的处理和分析问题,推动了地理信息科学与服务的进步,为政府决策、城市规划、...

    第3届Mathorcup数学建模竞赛优秀论文-A题中文-A题中文题目.doc

    - **网站并发问题**:在高峰时段,尤其是节假日,大量用户同时访问网站导致服务器压力过大,影响用户体验。 - **唯一资源问题**:同一张车票被多个用户同时请求时,可能导致系统无法正常处理请求,进而引发死锁或...

    p242- p270 TCP半连接队列和长连接队列

    为了解决这个问题,Linux提供了一个参数`tcp_abort_on_overflow`。当设置为0时,服务器在全连接队列满时会丢弃客户端的ACK,客户端可能在一段时间后重试连接。设置为1时,服务器会向客户端发送RST报文,立即终止连接...

    C#多年累积类库

    这些类库通常是为了提高开发效率、解决常见问题或者实现特定功能而创建的,可能包括各种实用工具类、数据处理模块、网络通信组件等。在.NET框架下,开发者可以通过封装常用功能,将它们整理成类库,以便在不同的项目...

    ParaStor云存储系统介绍.pptx

    总的来说,ParaStor云存储系统凭借其分布式非对称架构,提供了高并发、高扩展性的存储解决方案,特别适合于需要处理大规模非结构化数据的企业和组织。随着数据量的持续增长和对存储性能要求的提升,ParaStor这样的云...

    postgresql-9.1.3-1-windows-x64

    1. **多版本并发控制(MVCC)**:PostgreSQL采用MVCC实现事务隔离,保证了读写操作的并发性,即使在高并发环境下也能提供一致的数据视图。 2. **全文搜索功能**:内建的Tsearch2模块支持对文本数据进行全文搜索,...

Global site tag (gtag.js) - Google Analytics