并发编程
「已注销」
这个作者很懒,什么都没留下…
展开
-
9.实战java高并发程序设计(全书总结)
1.了解同步(Synchronous)异步(Asynchronous)的区别同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,2.并发(Concurrency)和并行(Parallelism)的区别并行的多个任务是真的同时执行,而对于并发来说,这个过程只是交替的,一会儿执行任务A,一会儿执行任务B,系统...原创 2020-02-26 20:37:49 · 883 阅读 · 0 评论 -
8实战java高并发程序设计---并行程序调试
8.1 准备实验样本8.2 正式起航首先,我们需要理解ArrayList的工作方式。在ArrayList初始化时,默认会分配10个数组空间。当数组空间消耗完毕后,ArrayList就会进行自动扩容。在每次add()函数时,系统总要事先检查一下内部空间是否满足所需的大小,如果不满足,就会扩容,否则就正常添加元素。多线程共同访问ArrayList的问题在于:在ArrayList容量快用...原创 2020-02-26 17:34:28 · 221 阅读 · 0 评论 -
6实战java高并发程序设计---Java 8/9/10与并发
2014年,Oracle发布了新版本Java 8。对于Java来说,这显然是一个具有里程碑意义的版本。它最主要的改进是增加了函数式编程的功能。就目前来说,Java最令人头痛的问题,也是受到最多质疑的地方,应该就是Java烦琐的语法。这样我们不得不花费大量的代码行数,来实现一些司空见惯的功能,以至于Java程序总是冗长的。但是,这一切将在Java 8的函数式编程中得到缓解。严格来说,函数式编程与...原创 2020-02-23 12:53:42 · 369 阅读 · 0 评论 -
5实战java高并发程序设计--并行模式与算法
由于并行程序设计比串行程序设计复杂得多,因此我强烈建议大家了解一些常见的设计方法。就好像练习武术,一招一式都是要经过学习的。如果自己胡乱打,效果不见得好。前人会总结一些武术套路,对于初学者来说,不需要发挥自己的想象力,只要按照武术套路出拳就可以了。等练到了一定的高度,就不必拘泥于套路了。这些武术套路和招数,对应到软件开发中来就是设计模式。在这一章中,我将重点向大家介绍一些有关并行的设计模式及算法。...原创 2020-02-21 19:43:43 · 544 阅读 · 0 评论 -
4实战java高并发程序设计--4.锁的优化及注意事项
锁是最常用的同步方法之一。在高并发的环境下,激烈的锁竞争会导致程序的性能下降,因此我们有必要讨论一些有关锁的性能问题,以及一些注意事项,比如避免死锁、减小锁粒度、锁分离等。对于单任务或者单线程的应用而言,其主要资源消耗都花在任务本身。它既不需要维护并行数据结构间的一致性状态,也不需要为线程的切换和调度花费时间。但对于多线程应用来说,系统除了处理功能需求外,还需要额外维护多线程环境的特有信息,如...原创 2020-02-17 14:55:22 · 310 阅读 · 0 评论 -
3.实战java高并发程序设计--JDK并发包---3.4 使用JMH进行性能测试
3.4.1 什么是JMHJMH(Java Microbenchmark Harness)是一个在OpenJDK项目中发布的,专门用于性能测试的框架,其精度可以到达毫秒级。通过JMH可以对多个方法的性能进行定量分析。比如,当要知道执行一个函数需要多少时间,或者当对一个算法有多种不同实现时,需要选取性能最好的那个。3.4.2 Hello JMH要想使用JMH,首先需要得到JMH的jar包,...原创 2020-02-17 13:39:08 · 366 阅读 · 0 评论 -
3.实战java高并发程序设计--JDK并发包---3.3不要重复发明轮子:JDK的并发容器(工具类)
除了提供诸如同步控制、线程池等基本工具外,为了提高开发人员的效率,JDK还为大家准备了一大批好用的容器类,可以大大减少开发工作量。大家应该都听说过一种说法,所谓程序就是“算法+数据结构”,这些容器类就是为大家准备好的线程数据结构。你可以在里面找到链表、HashMap、队列等。当然,它们都是线程安全的。在这里,我也打算花一些篇幅为大家介绍一下这些工具类。这些容器类的封装都是非常完善并且“平易近人...原创 2020-02-16 17:39:54 · 255 阅读 · 0 评论 -
3.实战java高并发程序设计--JDK并发包---3.2
3.2 线程复用:线程池原创 2020-02-15 18:50:57 · 391 阅读 · 0 评论 -
3.实战java高并发程序设计--JDK并发包---3.1
3.1 多线程的团队协作:同步控制同步控制是并发程序必不可少的重要手段。之前介绍的关键字synchronized就是一种最简单的控制方法,它决定了一个线程是否可以访问临界区资源。同时,Object.wait()方法和Object.notify()方法起到了线程等待和通知的作用。这些工具对于实现复杂的多线程协作起到了重要的作用。下面我们首先将介绍关键字synchronized、Object.wa...原创 2020-02-14 14:53:01 · 235 阅读 · 0 评论 -
2.实战java高并发程序设计--java并行程序基础
2.1 有关线程你必须知道的事进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。用一句简单的话来说,你在Windows中看到的后缀为.exe的文件都...原创 2020-02-12 21:00:18 · 336 阅读 · 0 评论 -
1.实战java高并发程序设计--走入并行世界
1.2.1 同步(Synchronous)和异步(Asynchronous)同步和异步通常用来形容一次方法调用。同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常会在另外一个线程中“真实”地执行。整个过程,不会阻碍调用者的工作。图1.4显示了同步方法调用和异步方法调用的...原创 2020-02-12 15:14:41 · 242 阅读 · 0 评论