从多线程编程到Java异步编程实战

Gavin-King 发布于 2019/12/31 09:15
阅读 321
收藏 3

听说“加多”又出了一本书《Java异步编程实战》,自己和加多相识也有些日子了,虽然更多的是偶然间微信群里的交流,更多的是我向他请教问题,作为程序员的晚辈,我想谈谈关于“加多”和Java异步编程那些事。
## 关于加多
那年,仲夏,第一次见加多是在钉钉的技术直播。
那是一节关于“JAVA多线程编程”的直播,从屏幕上看到“加多”透着技术人的实在,谦逊,有礼有节,逻辑清晰。
那一节“JAVA多线程编程”,从简单入门概念到深入内核态、用户态的剖析,从入门demo到实战调试每一个细节,让我印象深刻,仿佛打开了多线程编程的大门,原来多线程还有如此多的知识自己没有接触过,仿佛以往的自己如同滇王一般夜郎自大。
当井底的青蛙被人带上井口之后,它发现原来世界是如此的广袤,怀着仰慕的心情加了“加多”的微信号。
至此后许多大佬在微信群里共享技术文章,讨论技术问题。凡是遇见难题或着有意思的技术问题,我们都在其中讨论,“加多”都会耐心,细心解答。
微信里的“加多”知识渊博,解答问题非常耐心、和善、彬彬有礼,不时的分享一些前沿技术,让我看见的是他对技术的热情。
这,便是我所认识的“加多”。

## 关于同步/异步/多线程编程
###### 同步
初入JAVA大门,学会了synchronize和Lock,仿佛拿到了一把屠龙刀,天下武林唯我独尊。自认为多线程编程,不就那么点事儿吗?new 多个Thread同事start,遇到并发修改资源的时候,用volatile一修饰,再用synchronize或者Lock一锁,不就完了吗。
慢慢的自己写的代码性能越来越差,有的时候又非常吃CPU,或者遇到内存溢出等等莫名其妙的问题,百思不得其解,又无从入手去解决。
后来一直在网上,论坛,博客等地方摸索,渐渐的懂了一些线程池的使用,但总还是感觉差那么一点。
###### 多线程
后来有一篇帖子推荐了《Java 并发编程之美》,原来并发编程还有这么多门门道道!还有CAS操作、指令重排、重入锁、乐观锁、悲观锁、公平锁、非公平锁、独占锁、共享锁、、、这么多东西!
呜呼哀哉,难怪人人都说多线程编程难,初入JAVA大门时竟然浑然不知,还以为自己是万中无一的天才。前人教训的极是啊!编写正确的程序并不容易,而编写正常的并发程序就更难了;
真是满桶水闷声不响,半桶水晃荡响,胸无点墨最终贻笑大方。
慢慢的针对不同的场景,用上了不同的并发编程技术,代码和性能都有了一些提升,自己还是不够虚心学习,在技术世界还要努力前进。
###### 异步
接触的越来越多,发现竟然还有“异步”这个概念,异步可以进一步提升程序性能。最早接触应该是MQ的使用,那时候感觉这是个重武器,至少的 “加特林”之类的,感觉自己写单个方法,完全用不上。
再不济,异步也是在dubbo或者RPC方法使用的时候用上的,跟自己写的单体方法有什么关系?
回头一想,观察者模式不是也算一种异步吗?订阅发布模式不是也有一点“异步”的感觉吗?
好像是那么回事啊,经过学习,原来JAVA自带的Future模型就是纯正“异步”模式啊,再到后面的CompletableFuture、JAVA8的流式编程、RxJava。
## 写在后面
感觉有那么点意思了,但是好像很多概念都混淆了,看来是时候充一次电,好好的把各个细节梳理一遍,用一本书来系统的学习是非常必要的。
加多大神正好出了一本书《Java异步编程实战》,赶快美滋滋学起来,不要落后了!加油!

购买链接:https://item.jd.com/12778422.html  
 
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191231090439840.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hpcmVkbWU=,size_16,color_FFFFFF,t_70)

加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部