i++操作非原子的验证代码
package incre;
public class Incre {
public static void main(String[] args) {
class Count implements Runnable {
public int num;
@Override
public void run() {
//自增操作,非原子操作,线程不安全
// for (int i = 0; i < 10000; i++) {
// num++;
// }
//对代码进行同步,查看正确结果。
synchronized (this) {
for (int i = 0; i < 10000; i++) {
num++;
}
}
}
public int getNum(){
return num;
}
}
Count c = new Count();
//创建多个线程
final int THREAD_COUNT = 10;
Thread[] threadArray = new Thread[THREAD_COUNT];
for(int i = 0; i < threadArray.length; i++){
threadArray[i] = new Thread(c);
}
//启动多个线程
for(Thread t : threadArray){
t.start();
}
//等待这些线程结束
for(Thread t : threadArray){
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//查看计数结果
System.out.println("计数结果:" + c.getNum());
}
}
i++非原子操作验证代码
i++操作非原子的验证代码的更多相关文章
- C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现【可运行】
C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现[可运行] #include <stdio.h> #include <stdlib.h> typedef int Key ...
- Shiro权限验证代码记录,正确找到shiro框架在什么地方做了权限识别
权限验证方式的验证代码: org.apache.shiro.web.servlet.AdviceFilter这个类是所有shiro框架提供的默认权限验证实例类的父类 验证代码: public void ...
- SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码
在SpringMVC学习系列(6) 之 数据验证中我们已经学习了如何结合Hibernate-validator进行后台的数据合法性验证,但是通常来说后台验证只是第二道保险,为了更好的用户体验会现在前端 ...
- 利用strut2标签自动生成form前端验证代码
利用strut2标签自动生成form前端验证代码,使用到的技术有1.struts2标签,如<s:form> <s:textfieled>2.struts2读取*Validati ...
- 解决视图状态消息验证代码 (MAC) 错误
https://blog.csdn.net/bingtingabc/article/details/49148745 2015年10月15日 10:05:56 bingtingabc 阅读数:3397 ...
- 对象部分初始化:原理以及验证代码(双重检查锁与volatile相关)
对象部分初始化:原理以及验证代码(双重检查锁与volatile相关) 对象部分初始化被称为 Partially initialized objects / Partially constructed ...
- C# 通过Selecnuim WebDriver操作非IE浏览器
之前有需求需要操作Chrome中的dom元素,没做过这个,但是网上关于这个方面的资料比较少,所以自己捣腾了几天,在知道.net中有这个玩意. 但是一百度,全是关于java,python的而c#的那是一 ...
- 练习:python 操作Mysql 实现登录验证 用户权限管理
python 操作Mysql 实现登录验证 用户权限管理
- [转]jQuery.validate插件在失去焦点时执行验证代码
转:http://my.oschina.net/enyo/blog/311566 关于 jquery.validate.js 表单验证插件如何在失去焦点时做验证.看手册后发现默认是在表单提交时执行验证 ...
随机推荐
- Class python31
# class Teacher: # def __init__(self, name, age, sex, salary, level): # self.name = name # self.age ...
- Android 4学习(7):用户界面 - 基础
参考<Professional Android 4 Development> Android UI基本元素 下面这些概念是Android UI设计的基础,深入学习和理解它们是Android ...
- Java堆初始大小的建议值
摘自:<Java Performance>第三章 Initial Heap Space Size Configuration This section describes how to u ...
- 问题:C#后台获取tr;结果:C# <tr id="a" runat="server"> 怎么在后台用FindControl找到这个tr的id?
C# <tr id="a" runat="server"> 怎么在后台用FindControl找到这个tr的id? 2013-05-30 10:52 ...
- LAMP 2.8 php.ini配置文件详解
修改php配置文件,但有时候我们并不知道 php.ini 所在路径,这时候就需要通过命令来查一查在哪里. /usr/local/php/bin/php -i |head 看那一行 Loaded Con ...
- C#如何解析JSON数据(反序列化对象)
第一章:C#如何拿到从http上返回JSON数据? 第二章:C#如何解析JSON数据?(反序列化对象) 第三章:C#如何生成JSON字符串?(序列化对象) 第四章:C#如何生成JSON字符串提交给接口 ...
- ListView显示Sqlite的数据美化版与性能优化
在上一篇文章中,我们已经实现在listview显示数据库内容的.但是我们listview中,排版不是很好看,所以这篇文章呢,我们来对listveiw进行美化.哈哈,说白了,就是对listview添加一 ...
- java在Win7 64位 获取客户端的IP,MAC,计算机名
package com.javaweb.util; import java.io.IOException; import java.io.InputStreamReader; import java. ...
- Generalized Low Rank Approximation of Matrices
Generalized Low Rank Approximations of Matrices JIEPING YE*jieping@cs.umn.edu Department of Computer ...
- google浏览器:Ignored call to 'confirm()'. The document is sandboxed, and the 'allow-modals' keyword is not set
最近做一个功能,测试环境测试没问题,google浏览器测试也没问题,结果上生产发现google浏览器竟然用不了.查看控制台发现控制台报错: Ignored call to 'confirm()'. T ...