Java并发编程实践分享课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Java并发编程实践分享课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 并发 编程 实践 分享 课件
- 资源描述:
-
1、Java并发编程实践分享 WA定时器编程经验分享cesc.wangl以下方法哪个是线程安全第一个方法:第一个方法:public void add(int i)i+;第二个方法:第二个方法:public Object getLast(List list)int lastIndex=list.size()-1;return list.get(lastIndex);第三个方法:第三个方法:public Object getLast(Vector v)int lastIndex=v.size()-1;return v.get(lastIndex);第一个方法:第一个方法:private static
2、void testList()List tests=new ArrayList();tests.add(a);tests.add(b);tests.add(“temp);tests.add(c);for(String test:tests)if(test.equals(b)tests.remove(“temp);System.out.println(test);第二个方法:第二个方法:private static void testVector()Vector tests=new Vector();tests.add(a);tests.add(b);tests.add(“temp);tests
3、.add(c);for(String test:tests)if(test.equals(b)tests.remove(“temp);System.out.println(test);执行结果什么?1.JUC简介简介2.线程池线程池3.Atomic4.Lock5.并发编程注意事项并发编程注意事项 JDK1.5新增的类库 提供并发编程中很常用的实用工具类线程池选哪个?多少线程合适?多大的队列合适?第一个问题ThreadPoolExecutorExecutorsBlockingQueuecorePoolSize /核心池的大小maxPoolSize/最大池的大小keepAliveTime/超时时间
4、workQueue/等待队列handler/饱和策略corePoolSize=CPU个数+1(计算密集型的操作)(Java Concurrency In Practice)AbortPolicy 抛异常RejectedExecutionException CallerRunsPolicy 调度者执行 DiscardOldestPolicy放弃最旧的未处理请求,执行新传入的任务 DiscardPolicy 不做任何操作,放弃新任务BlockingQueueput put、taketake生产者与消费者(工作队列与线程池)生产者与消费者(工作队列与线程池)新的请求超过线程池的处理能力,将请求放在队
5、列中,而不是竞争新的请求超过线程池的处理能力,将请求放在队列中,而不是竞争CPUCPU资源的线程队列,避免耗尽资源的情况出现资源的线程队列,避免耗尽资源的情况出现ArrayBlockingQueueArrayBlockingQueue、LinkedBlockingDeque LinkedBlockingDeque、SynchronousQueue SynchronousQueue注:如果任务之间有依赖,有限队列可能引起线程饥饿和死锁问题。注:如果任务之间有依赖,有限队列可能引起线程饥饿和死锁问题。各种线程池线程池线程池SingleThreadPoolCachedThreadPoolFixedT
6、hreadPoolcoolPoolSize10-maxPoolSize1Integer.MAX_VALUE-QueueLinkedBlockingQueueSynchronousQueueLinkedBlockingQueuehandlerAbortPolicyAbortPolicyAbortPolicykeepAliveTime060min0线程池两种常用策略:1、小池+大队列控制对CPU以及内存的使用,减少线程上下文切换2、大池+无队列大吞吐量、高效的移交任务WA使用Spring封装的线程池ThreadPoolTaskExecutorcoolPoolSize:5maxPoolSize:5Q
展开阅读全文