java 线程隐含同步错误 包装类
来源:互联网 发布:it服务 软件 编辑:程序博客网 时间:2024/04/27 20:57
package com.test;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.CompletionService;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorCompletionService;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class ManyFileUpload {private static Integer num = 0;public static int getInt() {synchronized (num) {//这样的线程同步是有问题的 因为每一次num在++后都是新对象了具体参见包装类return ++num;}}public static void main(String[] args) throws InterruptedException,ExecutionException {ExecutorService pool = Executors.newCachedThreadPool();List<Callable<Integer>> list = new ArrayList<Callable<Integer>>();int all[] = new int[101];for(int i : all){i = 1;//不起作用}for(int i : all){System.out.println(i);}System.out.println("========================");for (int i = 0; i < 100; i++) {list.add(new Callable<Integer>() {@Overridepublic Integer call() throws Exception {return ++num;}});}List<Future<Integer>> futures = pool.invokeAll(list);for (Future f : futures) {int i = (Integer) f.get();all[i]++;System.out.println(i);}System.out.println("========================");for(int i=0;i<100;i++){System.out.println(i+":"+all[i]);}pool.shutdown();}}
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000========================12364578189101113121714151625192423202221302629283537274031363432383358395541434250444554465747484853495651527859777960756162626663647465766768697170737294808183829184858687878988909295939796========================0:01:12:13:14:15:16:17:18:19:110:111:112:113:114:115:116:117:118:119:120:121:122:123:124:125:126:127:128:129:130:131:132:133:134:135:136:137:138:139:140:141:142:143:144:145:146:147:148:249:150:151:152:153:154:155:156:157:158:159:160:161:162:263:164:165:166:167:168:169:170:171:172:173:174:175:176:177:178:179:180:181:182:183:184:185:186:187:288:189:190:191:192:193:194:195:196:197:198:099:0
0 0
- java 线程隐含同步错误 包装类
- java同步包装器与线程安全
- linux 线程同步机制包装类
- Java知识点整理:第十章:包装类、集合的复制、集合线程同步化(线程安全)、集合与数组的相互转换
- Java集合框架官方教程(5):集合类的同步包装器/不可变包装器
- Java并发编程类学习二(线程的包装)
- Java 线程组,Callable,Future,线程池,ThreadLocal类,包装线程不安全的集合
- Java 线程组,Callable,Future,线程池,ThreadLocal类,包装线程不安全的集合
- JAVA线程-JAVA同步
- java包装类
- Java包装类学习
- Java 包装类
- java包装类
- JAVA 包装类
- Java包装类
- JAVA 包装类
- java包装类笔记
- java 包装类
- HBase+ZooKeeper+Hadoop2.6.0的ResourceManager HA集群高可用配置
- 【APIO2014】【UOJ103】【BZOJ3676】 Palindromes 题意&代码(C++)
- 红帽RHOP 8 发布一条龙方案
- 清橙网A1110. 街道
- C/C++复习:统计票数
- java 线程隐含同步错误 包装类
- Android接入微信开发注意事项
- 从尾到头打印链表中每个节点的值(采用栈实现)
- 指针函数逆序排序
- mac系统清理工具提供最智能的清理方案
- Linux rzsz上传与下载
- debug下数据库连接的问题
- OSv—Optimizing the Operating System for Virtual Machines 4
- php pack 用一个string 保存一个double 的数组