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
原创粉丝点击