并发
HarryChoy
java web开发小小程序员
展开
-
java并发编程(一)-并发编程需要注意问题
目录(?)[+]问题一上下文切换会带来额外的开销线程的运行机制什么是上下文切换上下文切换的过程上下文切换是有开销的如何减少上下文切换问题二并发不当可能会产生死锁什么是死锁死锁示例如何避免死锁问题三计算机资源会限制并发误区线程越多速度越快什么是资源如何解决资源的限制 并发是为了提升程序的执行速度,但并不是多线程一定比单线程高效,而且并发编程容易出错。若要实现正确且高效的并发,就要在开发过转载 2017-05-15 22:11:43 · 194 阅读 · 0 评论 -
Java并发编程(十二)——锁优化
转自:http://blog.csdn.net/u010425776/article/details/58598307目录(?)[+]自旋锁锁清除锁粗化轻量级锁偏向锁 自旋锁背景:互斥同步对性能最大的影响是阻塞,挂起和恢复线程都需要转入内核态中完成;并且通常情况下,共享数据的锁定状态只持续很短的一段时间,为了这很短的一段时间进行上下文切换并不值得。原理:当一条线程需要请求一把已转载 2017-05-17 00:01:51 · 225 阅读 · 0 评论 -
Java并发编程(十一)——线程安全
转自:http://blog.csdn.net/u010425776/article/details/58323471目录(?)[+]什么是线程安全线程安全的几种程度1 绝对的线程安全2 相对的线程安全3 线程对立实现线程安全的方法1 互斥同步2 非阻塞同步无同步方案 1. 什么是『线程安全』?如果一个对象构造完成后,调用者无需额外的操作,就可以在多线程环境下随意地使用,并且不发生错转载 2017-05-16 23:29:06 · 236 阅读 · 0 评论 -
Java并发编程(十)——线程池(2)
转自:http://blog.csdn.net/u010425776/article/details/56676897目录(?)[+]Executor两级调度模型Executor结构线程池FixedThreadPoolCachedThreadPoolSingleThreadExecutorScheduledThreadPool Executor两级调度模型 在HotSpot虚拟机转载 2017-05-16 22:56:06 · 169 阅读 · 0 评论 -
Java并发编程(九)——线程池(1)
转自:http://blog.csdn.net/u010425776/article/details/56673564目录(?)[+]线程池的作用线程池的实现原理ThreadPoolExecutor的使用创建线程池提交任务关闭线程池ThreadPoolExecutor运行机制设置合理的线程池大小 线程池的作用减少资源的开销 减少了每次创建线程、销毁线程的开销。提高响应速度 每转载 2017-05-16 22:26:16 · 223 阅读 · 0 评论 -
Java并发编程(八)——批量获取多条线程的执行结果
摘自:http://blog.csdn.net/u010425776/article/details/54580710目录(?)[+]方法一自己维护返回结果方法二使用ExecutorService的invokeAll函数方法三使用CompletionService当向线程池提交callable任务后,我们可能需要一次性获取所有返回结果,有三种处理方法。方法一:自己维护返回结果// 创建一个线程池E转载 2017-05-16 22:02:53 · 2543 阅读 · 0 评论 -
Java并发编程(七)——闭锁、同步屏障、信号量详解
目录(?)[+]闭锁CountDownLatch1 使用场景2 代码实现同步屏障CyclicBarrier1 使用场景2 闭锁 与 同步屏障 的区别3 代码实现信号量Semaphore1 使用场景2 代码实现 1. 闭锁:CountDownLatch1.1 使用场景若有多条线程,其中一条线程需要等到其他所有线程准备完所需的资源后才能运行,这样的情况可以使用闭锁。1.2 代码实现//转载 2017-05-16 21:33:26 · 452 阅读 · 0 评论 -
Java并发编程(六)——Executors
转自:http://blog.csdn.net/u010425776/article/details/54580157目录(?)[+]Executors框架简介Executor类ExecutorService类Executors类Executor执行任务Executor执行Runnable任务Executor执行Callable任务ThreadPoolExecutor类 Execu转载 2017-05-16 20:36:52 · 234 阅读 · 0 评论 -
Java并发编程(五)——线程间通信
转自:http://blog.csdn.net/u010425776/article/details/54341405目录(?)[+]volatilesynchronized关键字1 如何实现通信2 特点3 使用场景4 例子等待通知机制1 如何实现2 注意点3 QA4 代码实现5 超时等待模式管道流1 作用2 特点3 实现join1 作用2 实现多条线程之间有时需要数据交互,下面介绍五种线程间数据交转载 2017-05-16 20:28:33 · 206 阅读 · 0 评论 -
java并发编程(四)——中断
转自:http://blog.csdn.net/u010425776/article/details/54313661目录(?)[+]什么是中断中断的相关方法暂停继续停止线程已过时中断的使用设置中断监听触发中断安全地停止线程循环标记变量循环中断状态总结处理中断QA 什么是中断?在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作。因此,Java提供了一转载 2017-05-15 23:49:05 · 216 阅读 · 0 评论 -
Java并发编程(二)——volatile
目录(?)[+]并发编程的两个关键问题通信的方式1 通信方式的种类2 Java使用的通信方式Java多线程的内存模型简化版volatile是什么volatile的使用volatile的特性1 重排序2 可见性什么是内存可见性为什么会出现内存不可见的情况如何确保共享变量的可见性为什么volatile能保证共享变量的内存可见性volatile变量赠送的附加功能3 原子性什么是原子性volatile能确保转载 2017-05-15 23:06:13 · 205 阅读 · 0 评论 -
Java并发编程(三)——线程的状态
转自:http://blog.csdn.net/u010425776/article/details/54292463目录(?)[+]线程的状态初始态NEW运行态RUNNABLE阻塞态等待态超时等待态终止态线程状态转换图初始态就绪态就绪态运行态就绪态运行态运行态阻塞态阻塞态就绪态运行态等待态等待态就绪态等待态阻塞态注意点 线程的状态初始态:NEW创建一个Thread对象,但还未调用转载 2017-05-15 23:19:16 · 297 阅读 · 0 评论 -
java并发容器集合
转自:http://blog.csdn.net/u010425776/article/details/54890215概述 java.util包中的大部分容器都是非线程安全的,若要在多线程中使用容器,你可以使用Collections提供的包装函数:synchronizedXXX,将普通容器变成线程安全的容器。但该方法仅仅是简单地给容器使用同步,效率很低。因此并发大师Doug Lea提转载 2017-05-17 09:22:22 · 295 阅读 · 0 评论