
并发编程
文章平均质量分 91
栋先生
Java程序员,努力学习,早日成为大神!
展开
-
Java内存模型
一、硬件的内存模型和指令重排序二、Java内存模型2.1 主内存与工作内存2.2 内存间交互操作2.3 对于long和double型变量的特殊规则2.3 Java内存模型的三大特征原子性可见性有序性多任务处理在现代计算机操作系统中几乎已经是一项必备的功能了。计算机cpu的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、网络通信...原创 2018-07-08 16:09:56 · 350 阅读 · 0 评论 -
使用并行流还是CompletableFuture(四)
并行流和CompletableFuture使用定制的执行器结论我们知道,对集合进行计算,可以使用并行和异步的CompletableFuture操作,都可以加快其处理,那么到底该使用并行还是异步呢?并行流和CompletableFuture如上篇博客中所讲到的getPrice()方法,使用并行方式处理,代码如下: public List<Str...原创 2018-08-19 21:52:43 · 1936 阅读 · 0 评论 -
工厂方法创建CompletableFuture(三)
CompletableFuture类自 身提供了大量精巧的工厂方法,使用这些方法能更容易地完成整个流程,还不用担心实现的细节。 public Future<Double> getPriceAsync(String product) { //创建CompletableFuture 对象,它会包含计算的结果 CompletableFuture&...原创 2018-08-19 21:51:18 · 760 阅读 · 0 评论 -
使用CompletableFuture构建异步应用(二)
获取商品价格的同步方法将同步方法转换为异步方法错误处理本文主要介绍Java 8 中的异步处理的方式,主要是 CompletableFuture类的一些特性。 为了展示CompletableFuture的强大特性,我们会创建一个名为“最佳价格查询器” (best-price-finder)的应用,它会查询多个在线商店,依据给定的产品或服务找出最低的价格。这个过程中,你会学到...原创 2018-08-19 21:47:20 · 1270 阅读 · 1 评论 -
线程安全
一、什么是线程安全?二、java语言中的线程安全三、线程安全的实现方法1. 互斥同步Java中实现互斥同步的两种方法缺点2. 非阻塞同步缺点3. 无同步方案四、锁优化1. 自旋锁与自适应自旋2. 锁消除3. 锁粗化4. 轻量级锁加锁过程解锁过程注意事项5. 偏向锁加锁过程偏向锁的撤销注意事项轻量级锁、偏向锁的状态转化...原创 2018-07-08 16:22:33 · 836 阅读 · 0 评论 -
Java线程调度与线程优先级
一、线程调度1.1 协同式线程调度1.2 抢占式线程调度二、线程优先级三、线程中的状态转换一、线程调度线程调度是指系统为线程分配处理器使用权的过程,主要调度方式有两种,分别是协同式线程调度和抢占式线程调度。1.1 协同式线程调度协同式线程调度,线程的执行时间由线程本身控制。协同式线程调度,线程执行时间由线程本身来控制,线程把自己的工作执行完之后,...原创 2018-07-08 16:19:17 · 3503 阅读 · 0 评论 -
线程的实现方式
一、线程的三种实现方式1. 使用内核线程实现优点缺点2. 使用用户线程实现优点缺点3. 使用用户线程加轻量级进程混合实现优点:二、Java线程的实现本文主要介绍线程的3种实现方式和java线程的实现方式。线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配 和执行调度分开,各个进程既可以共享进程资源(内存地址、文件I/O等)...原创 2018-07-08 16:16:54 · 3308 阅读 · 0 评论 -
先行发生原则(happens-before)介绍
一、什么是先行发生原则二、Java内存模型中的先行发生关系三、如何应用先行发生规则如果Java内存模型中所有的有序性都仅仅靠volatile和synchronized来完成,那么有一些操作将会变得很烦琐,但是我们在编写Java并发代码的时候并没有感觉到这一点,这是因为Java语言中有一个“先行发生”(happens-before)的原则。 这个原则非常重要,它是判断数据是...原创 2018-07-08 16:15:25 · 3271 阅读 · 2 评论 -
volatile变量详解
一、可见性二、禁止重排序三、java内存模型对volatile的特殊规则关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确、 完整地理解,以至于许多程序员都习惯不去使用它,遇到需要处理多线程数据竞争问题的时候一律使用synchronized来进行同步。 当一个变量定义为volatile之后,它将具备两种特性:一是可见性,二是会禁...原创 2018-07-08 16:14:17 · 4471 阅读 · 2 评论 -
java中的异步处理和Feature接口(一)
背景介绍Feature接口Feature接口和Tread的区别Feature接口示例Feature接口的局限性背景介绍想象这样一个场景:你可能希望为你的法国客户提供指定主题的热点报道。为实现这一功能,你需要向 谷歌或者Twitter的API请求所有语言中针对该主题最热门的评论,可能还需要依据你的内部算法 对它们的相关性进行排序。之后,你可能还需要使用谷歌的翻译...原创 2018-08-19 13:38:29 · 23520 阅读 · 2 评论