以前看CSDN看的是津津乐道,现在看CSDN看的十分蒙蔽,复制粘贴的太多,复制复制的都变味了,传者传者就走样了。CSDN适合了解概念基础入门。现在铺天盖地的消息,让人着实难辨真假,以后讨论事情和文章一定要注意讨论事项的信息来源,不要在二手信息上深入讨论,不要用二手信息作为重要依据。还有就是能看书尽量看书,看书,看经典书,这个方法很棒,但是看书确实很枯燥,日拱一卒。
说实在之前对JUC停留在会用当中,并没有系统的了解,可能是系统还没有到考虑线程安全不安全的地步。看完《Java并发编程实战》觉得收获匪浅、获益匪浅。接下来准备输入一些并发编程的技巧和自己的理解。先说一下自己的几个思考吧。
没有说线程安全它就有可能线程不安全。当然线程不安全问题在高并发当中也是偶然问题。
又想到了优雅停机,线程是怎么回收?这个跟底层线程取消和关闭的策略有很大关系,Graceful需要时间。
真正写代码中的并发编程技巧用的有限有限,比如:不能再去写自己开启一个事务去start()这种代码,一定要用灵活的Executor管理,比如要给超时时间等。
JMM里面的一些设计会在可预测性和程序的易于开发性之间进行权衡,可伸缩性比性能重要。
线程的最主要目的是提高程序的运行性能,并不是线程越多越好,首先要确保程序是正确的,并发程序的测试或许要比并发程序的开发更加困难。
JVM升级并发性能主要提升对非阻塞算法的使用,阻塞算法已经没有什么提高的空间了。
之前做过一些GUI的程序,觉得相对卡一点,因为它是单线程模型。为什么GUI采取单线程的时间队列模型?竞态条件和死锁导致了稳定问题,先要保证程序正确,才能再保证性能,如果没有正确性,再高的性能也是枉然。
……还有好多,下一篇会把实际项目中的实践技巧,笔者觉得有用的分享一波。
如果把IT项目比作土木工程中的造房子,线程或者锁就类似于铆钉和工字梁在土木工程的作用。如果不了解这些,怎么能造好房子?