欢迎来到天天文库
浏览记录
ID:36539189
大小:524.60 KB
页数:30页
时间:2019-05-09
《Java并发编程实践分享》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java并发编程实践分享——WA定时器编程经验分享cesc.wangl以下方法哪个是线程安全第一个方法:publicvoidadd(inti){i++;}第二个方法:publicObjectgetLast(Listlist){intlastIndex=list.size()-1;returnlist.get(lastIndex);}第三个方法:publicObjectgetLast(Vectorv){intlastIndex=v.size()-1;returnv.get(lastIndex);}第一个方法:private
2、staticvoidtestList(){Listtests=newArrayList();tests.add("a");tests.add("b");tests.add(“temp");tests.add("c");for(Stringtest:tests){if(test.equals("b")){tests.remove(“temp");}System.out.println(test);}}第二个方法:privatestaticvoidtestVector(){Vec
3、tortests=newVector();tests.add("a");tests.add("b");tests.add(“temp");tests.add("c");for(Stringtest:tests){if(test.equals("b")){tests.remove(“temp");}System.out.println(test);}}执行结果什么?JUC简介线程池AtomicLock并发编程注意事项JDK1.5新增的类库提供并发编程中很常用的实用工具类线程池选哪个?多少线程
4、合适?多大的队列合适?第一个问题ThreadPoolExecutorExecutorsBlockingQueuecorePoolSize//核心池的大小maxPoolSize//最大池的大小keepAliveTime//超时时间workQueue//等待队列handler//饱和策略corePoolSize=CPU个数+1(计算密集型的操作)(JavaConcurrencyInPractice)AbortPolicy抛异常RejectedExecutionExceptionCallerRunsPolicy调度者执行Di
5、scardOldestPolicy放弃最旧的未处理请求,执行新传入的任务DiscardPolicy不做任何操作,放弃新任务BlockingQueueput、take生产者与消费者(工作队列与线程池)新的请求超过线程池的处理能力,将请求放在队列中,而不是竞争CPU资源的线程队列,避免耗尽资源的情况出现ArrayBlockingQueue、LinkedBlockingDeque、SynchronousQueue注:如果任务之间有依赖,有限队列可能引起线程饥饿和死锁问题。各种线程池线程池SingleThreadPoolCach
6、edThreadPoolFixedThreadPoolcoolPoolSize10---maxPoolSize1Integer.MAX_VALUE---QueueLinkedBlockingQueueSynchronousQueueLinkedBlockingQueuehandlerAbortPolicyAbortPolicyAbortPolicykeepAliveTime060min0线程池两种常用策略:1、小池+大队列控制对CPU以及内存的使用,减少线程上下文切换2、大池+无队列大吞吐量、高效的移交任务WA使用Spr
7、ing封装的线程池ThreadPoolTaskExecutorcoolPoolSize:5maxPoolSize:5Queue:LinkedBlockingQueue10000Handler:AbortPolicy批量执行下,需要记录每个线程是否执行完毕,来控制主线程是否继续下一个批量的执行第二个问题计数器???并发???synchronized???AtomicInteger“可以用原子方式更新的int值。”CAS(CompareAndSet)volatile(线程可见性)非阻塞算法(乐观锁)privatevolati
8、leintvalue;publicfinalintget(){ returnvalue; }publicfinalintincrementAndGet(){ for(;;){ intcurrent=get(); intnext=current+1;
此文档下载收益归作者所有