`
zuoge85
  • 浏览: 77849 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

并发的最低安全性

    博客分类:
  • java
阅读更多

并发最低安全性

 

例如在某些实时性统计的时候我们只需要这种最低安全性保障就够了,

 

在多线程并发的情况下.基本类型和引用都能保证最低安全性.

但是在32位jre的情况下long和double是不能保证这种安全性的...可能会读取到严重的错误值,例如读取到了2次不同更新的高32位和低32位的组合值!

 

补充,其实CopyOnWriteArray也是一种保证最低安全性然后获得性能提升的办法

 

 

下面是一个测试在32位系统上,非常快就能输出error:3333333355555555,

而在64位系统没有这种问题.可以给变量加上volatile修饰符获得这种最低安全性!

 

 

package sb.test;

import java.util.Arrays;

/**
 * jvm参数 -server -verbose:gc -Xms1024m -Xmx1536m
 * 
 * @author zuoge85
 * 
 */
public class VolatileTest {
	private static final int THREAD_NUMS = 4;
	private static final long NUMS = 10000000000000000l;

	public static void main(String[] args) {
		try {
			test();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	private static  long value = 0;
	private static final long[] values = {0x3333333333333333l,0x4444444444444444l,0x5555555555555555l,0x6666666666666666l};
	private static void test() throws InterruptedException {
		Thread[] ts = new Thread[THREAD_NUMS];
		for (int i = 0; i < ts.length; i++) {
			final int n = i;
			ts[i] = new Thread() {
				public void run() {
					for (int j = 0; j < NUMS; j++) {
						value = values[n];
					}
				}
			};
		}
		Thread readThread = new Thread(){
			public void run() {
				while(true){
					long v = value;
					if(Arrays.binarySearch(values, value) >=0){
						
					}else{
						System.out.println("error:"+Long.toHexString(v));
					}
				}
			}
		};
		for (int i = 0; i < ts.length; i++) {
			ts[i].start();
		}
		readThread.start();
		for (int i = 0; i < ts.length; i++) {
			ts[i].join();
		}
		readThread.stop();
		readThread.join();
		System.out.println(value);
	}
}

 

 

 

 

 

0
7
分享到:
评论

相关推荐

    C#120问(重点难点)

    摘抄了里面两个问题,还有120个,真的很不错 1.维护数据库的完整性、一致性、...SqlServer自动锁定特定记录、字段或文件,防止用户访问,以维护数据安全或防止并发数据操作问题,锁可以保证事务的完整性和并发性。

    Bull:Premium Queue软件包,用于处理NodeJS中的分布式作业和消息

    精心撰写的岩石固体稳定性和原子性。 ·····检查新 跟随获得公牛新闻和更新!公牛如果您想开始使用完全用Typescript编写的Bull的下一个主要版本,欢迎使用的新仓库。 否则,非常欢迎您仍然使用Bull,这是一个...

    信鸽推送代码

    通知及消息高度压缩,节省流量的同时加密保证安全性 丰富标签,精准定向 特定标签人群,团队测试用户,全量用户,单个用户等多种推送范围选择 及时稳定地将信息送达到最相关的用户,形成用户粘性,避免骚扰 开放API...

    论文研究 - 撒哈拉以南非洲地区进行心脏直视手术的初步经验:马里面临的最低实践标准挑战

    检查患者的病历,并提取年龄,性别,诊断,EuroSCORE,手术类型,体外循环细节,并发症和住院时间的数据。 结果:研究了六名男女比例为1的患者,年龄在12至35岁之间(平均22.5±12岁)。 EuroSCORE的平均值为6±41...

    瑞友天翼5用户手册

    3、每并发用户最低需10-20kbps带宽占用 4、六种应用类型CS程序、BS程序、文件夹、文档、内容、桌面发布 5、虚拟应用程序发布调试 6、会话共享 7、本地虚打印、映射打印 8、本地输入法、映射输入 9、公告、消息发...

    数据库服务器(全文).doc

    2、数据库安全性高(安全保证好):数据库服务器提供监控性能、并发控制等工具 。由DBA(Database Administrator,数据库管理员)统一负责授权访问数据库及网络管理。 3、数据可靠性管理和恢复好:数据库服务器提供...

    《数据库系统》期末复习笔记

    4) 数据完整性和安全性 5) 并发访问和鲁棒性(故障恢复) 数据抽象 a) 物理层:最低层次的抽象,描述数据实际上是怎样存储的 b) 逻辑层:描述数据库中存储什么数据及这些数据间存在什么关系。这样逻辑层就通过少量...

    security-response-automation:对威胁和漏洞采取自动措施

    建筑学 查找结果是从“安全性命令中心”或“云日志记录”(旧版)生成的,并发送到Pubsub主题筛选器云功能首先可以选择通过一系列Rego策略运行查找结果,这些策略将自动将查找结果标记为误报并自动将其关闭。...

    go-coronanet:Corona网络的Go实施

    :red_exclamation_mark: 该项目目前处于确定绝对最低要求的阶段。... 有关该模型在原理,隐私和安全性方面 ,请参阅项目。 作为快速TL; DR: 通过REST API仿真云可以使我们自然地在顶部构建一个Reac

    数据库设计与优化.pdf

    1.2 分析阶段 一 般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性、可用性、可靠性、安全性需求往往吸引 了我们大部分的注意力,但是,我们必须注意,性能 是很重要的非功能性需求,必须根据系统...

    沙盘运行器

    5. 本站不保证本站提供的资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。 下载频道公告. 做任务,得下载分 微软必应-英雄会在线编程 欢迎订阅...

    Oracle9i备课笔记——吕海东

    (4) 数据库的并发性:Oracle并发模型是独一无二的,优于IBM和Microsoft公司。大的ERP厂家都使用Oracle数据库的原因之一。 1.4 Oracle9i产品的构成 - Oracle9i已经不是一个简单的数据库服务器产品,而是一个完整的...

    企业人事管理系统需求规格说明书

    由于数据库具有数据结构化、最低冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。 由于用到的数据表格多,另外考虑到实际情况,企业人事基本信息的...

    基于SpringBoot+Quartz的轻量级分布式定时任务调度系统源码+项目说明+sql数据库.zip

    - 是否并发执行:单机串行或者并发执行 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通。 2、项目适用人群:计科、信息安全、数据科学与大数据技术、...

    酒店安防监控设计方案.doc

    因为工业计算机(IPC)往往必须经受恶劣工作环境的影响,如高温、低温、湿 气、振动、电磁干扰、粉尘等等,所以工控行业自身对产品的稳定性、可靠性等要求都 极高,对制造产品所使用的元器件要求也很高。 二、系统设计...

    ThinkSNS开源社交论坛系统 v4.6.1 bulid0630

    智能流媒体实时处理,高并发低延时,稳定安全,极致体验,为教育培训、娱乐演义、访谈媒体、游戏互动等行业带来全新的产品革命。 其他应用及插件: 广告系统、第三方登录、话题、签到、勋章、风云榜、附近的人、...

    C/C++笔试题(附答案,华为面试题系列)

    ,赋值运算符优先级最低 21.对数据库的一张表进行操作,同时要对另一张表进行操作,如何实现? 答:将操作多个表的操作放入到事务中进行处理 22.TCP/IP 建立连接的过程?(3-way shake) 答:在TCP/IP协议中,TCP协议...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     事务控制语言(Transactional Control Language,TCL),用于维护数据的一致性,包括COMMIT(提交事务)、ROLLBACK(回滚事务)和SAVEPOINT(设置保存点)3条语句 二、 Oracle的数据类型 类型 参数 描述 字符类型...

    ThinkSNS-PHP

    智能流媒体实时处理,高并发低延时,稳定安全,极致体验,为教育培训、娱乐演义、访谈媒体、游戏互动等行业带来全新的产品革命。 其他应用及插件: 广告系统、第三方登录、话题、签到、勋章、风云榜、附近的人、积分...

    2009达内SQL学习笔记

    可以阻止他人并发的修改,直到你解锁。 如果已有锁则自动退出:Select id,salary From s_emp where id=1 For Update NoWait; FOR UPDATE :可以再加 OF 精确到某格。如: ... For Update OF salary ... 注意要...

Global site tag (gtag.js) - Google Analytics