多线程(四)~数据操作的原子性,使用原子性操作AutomicInteger替换非原子性的i++的操作
这一章,我们要来验证volatile关键字不是原子性的,OK,还是用代码来说话。
- package com.multiThread.thread;
- publicclassNumberThreadimplementsRunnable{
- privatevolatileint num =0;
- @Override
- publicvoid run(){
- for(int i =0;i<500;i++){
- num++;
- }
- }
- publicint getNum(){
- return num;
- }
- publicvoid setNum(int num){
- this.num = num;
- }
- }
- package com.multiThread.test.automic;
- import com.multiThread.thread.NumberThread;
- publicclassAutomicTest{
- publicstaticvoid main(String[] args){
- NumberThread numThread =newNumberThread();
- for(int i =0;i<5;i++){
- Thread t =newThread(numThread);
- t.start();
- }
- try{
- Thread.sleep(1000);
- }catch(InterruptedException e){
- e.printStackTrace();
- }
- System.out.println(numThread.getNum());
- }
- }
- 2500
- 2282
- 2458
- package com.multiThread.thread;
- import java.util.concurrent.atomic.AtomicInteger;
- publicclassNumberThread2implementsRunnable{
- privateAtomicInteger num =newAtomicInteger();
- @Override
- publicvoid run(){
- for(int i =0;i<500;i++){
- num.incrementAndGet();
- }
- }
- publicAtomicInteger getNum(){
- return num;
- }
- publicvoid setNum(AtomicInteger num){
- this.num = num;
- }
- }
- package com.multiThread.test.automic;
- import com.multiThread.thread.NumberThread;
- import com.multiThread.thread.NumberThread2;
- publicclassAutomicTest{
- publicstaticvoid main(String[] args){
- NumberThread2 numThread2 =newNumberThread2();
- for(int i =0;i<5;i++){
- Thread t =newThread(numThread2);
- t.start();
- }
- try{
- Thread.sleep(1000);
- }catch(InterruptedException e){
- e.printStackTrace();
- }
- System.out.println(numThread2.getNum());
- }
- }
- 2500
多线程(四)~数据操作的原子性,使用原子性操作AutomicInteger替换非原子性的i++的操作的更多相关文章
- Java多线程学习---------超详细总结(java   多线程   同步   数据传递  )
		目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么 ... 
- volatile非原子性的示例
		volatile非原子性的示例 package com.stono.thread2.page124; public class MyThread extends Thread { volatile p ... 
- volatile非原子性示例
		volatile非原子性示例 学习了:<Java多线程编程核心技术>高洪岩 著 Page124 package com.stono.thread2.page124_2; public cl ... 
- JAVA笔记14__多线程共享数据(同步)/ 线程死锁 / 生产者与消费者应用案例 / 线程池
		/** * 多线程共享数据 * 线程同步:多个线程在同一个时间段只能有一个线程执行其指定代码,其他线程要等待此线程完成之后才可以继续执行. * 多线程共享数据的安全问题,使用同步解决. * 线程同步两 ... 
- iOS开发——实战篇Swift篇&UItableView结合网络请求,多线程,数据解析,MVC实战
		UItableView结合网络请求,多线程,数据解析,MVC实战 学了这么久的swift都没有做过什么东西,今天就以自己的一个小小的联系,讲一下,怎么使用swift在实战中应用MVC,并且结合后面的高 ... 
- java 多线程四
		java 多线程一 java 多线程二 java 多线程三 java 多线程四 一个生产者,消费者的例子: import java.util.Stack; /** * Created by root ... 
- 原生js实现类的添加和删除,以及对数据的add和update、view ,ajax请求 ,页面离开的操作
		1 类操作 function hasClass(cla, element) { if(element.className.trim().length === 0) return false; var ... 
- Unix环境高级编程(四)数据系统文件和信息
		本章主要介绍了Unix系统的正常运行要使用的与系统有关的数据文件和信息.如:口令文件,阴影文件.组文件.附加组.系统标识.时间和日期历程. 口令文件,即Unix系统用户数据库,存储在/etc/pass ... 
- Java笔记16:多线程共享数据
		一.Thread实现 public class ThreadDemo4 { publicstaticvoid main(String[] args) { new ThreadTest4().start ... 
随机推荐
- 20多个常用的免费WebService接口
			20多个常用的免费WebService接口 天气预报Web服务,数据来源于中国气象局 Endpoint Disco WSDL IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据) Endp ... 
- HDU6393(LCA + RMQ + 树状数组)  n边图,两点最短距离 , 修改边权
			这道题的进阶版本 进阶版本 题意: 一个n个点,n条边的图,2中操作,1是将某条边的权值更改,2是询问两点的最短距离. 题解: 由于n个点,n条边,所以是树加一个环,将环上的边随意取出一条,就是1颗树 ... 
- 找出数组中的最小值(es5/es6)
			1.命令式编程,只需要迭代数组,检查当前最小值是否大于数组元素,如果是更新最小值即可. var s = [2,3,4,5,6,7,8]; for(var i=0,m=s.length;i<m;i ... 
- Java执行操作系统命令
			从网上学来的方法,sample: try { String[] cmd = new String[] { System.getenv("HOMEPATH") + "/te ... 
- PostgreSQL精简命令:
			dos命令行连接PostgreSQL: . 接入PostgreSQL数据库: psql -h IP地址 -p 端口 -U 用户名 -d 数据库名 . 输入数据库密码 C:\Users\admin\De ... 
- MHA 高可用架构部署
			一, MHA 介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公 ... 
- elastic 常用查询操作
			_ GET http://127.0.0.1:9200/_cat/health?v 健康状况 GET http://127.0.0.1:9200/_cat/indices?v ... 
- (转)浅谈千万级PV/IP规模高性能高并发网站架构
			浅谈千万级PV/IP规模高性能高并发网站架构 原文:http://blog.51cto.com/oldboy/736710 文章架构简图: 高并发访问的核心原则其实就一句话“把所有的用户访问请求都 ... 
- CountDownLatch 多线程,等待所有线程结束
			CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 主要方法 public CountDownLatch(int count); 构造 ... 
- MATLAB-R2015b-win64安装详细教程
			1.首先下载以下文件 链接:https://pan.baidu.com/s/1eRAOKZw 密码:5nkj 2.双击R2015b_win64.iso打开(win8,win8.1,win10均可直接打 ... 
