摘要: 最近在研究Java NIO和netty,曾经一度感觉很吃力,根本原因还是对操作系统、TCP/IP、socket编程的理解不到位。 不禁感叹,还是当初逃的课太多。 假如上天给我一次机会,能够再回到意气风发的校园时代,我想那些逃过的课,应该还是会逃。 毕竟在那个躁动的年纪,有很多的事情都比上课有意思。 阅读全文
posted @ 2018-02-06 12:04 大诚挚 阅读(4851) 评论(1) 推荐(3) 编辑
摘要: 上一篇文章重点介绍了一下Java的Future模式,最后意淫了一个数据库连接池的场景。本想通过Future模式来防止,当多个线程同时获取数据库连接时各自都生成一个,造成资源浪费。但是忽略了一个根本的功能,就是多个线程同时调用get方法时,得到的是同一个数据库连接的多个引用,这会导致严重的问题。 所以 阅读全文
posted @ 2017-12-26 11:28 大诚挚 阅读(15863) 评论(2) 推荐(5) 编辑
摘要: 先上一个场景:假如你突然想做饭,但是没有厨具,也没有食材。网上购买厨具比较方便,食材去超市买更放心。 实现分析:在快递员送厨具的期间,我们肯定不会闲着,可以去超市买食材。所以,在主线程里面另起一个子线程去网购厨具。 但是,子线程执行的结果是要返回厨具的,而run方法是没有返回值的。所以,这才是难点, 阅读全文
posted @ 2017-10-19 16:06 大诚挚 阅读(162842) 评论(27) 推荐(60) 编辑
摘要: 对于AbstractQueuedSynchronizer衍生出来的并发工具类,这一篇再介绍俩。 场景1:有4个大文件的数据需要统计,最终将所有的统计结果进行加工,得到最后的分析数据。为了加速处理过程,当然是利用多线程:开启4个线程去分别统计每个文件的数据,开启1个线程对之前4个线程的数据加工。 这里 阅读全文
posted @ 2017-09-11 09:56 大诚挚 阅读(1415) 评论(0) 推荐(2) 编辑
摘要: synchronized的语义是互斥锁,就是在同一时刻,只有一个线程能获得执行代码的锁。但是现实生活中,有好多的场景,锁不止一把。 比如说,又到了十一假期,买票是重点,必须圈起来。在购票大厅里,有5个售票窗口,也就是说同一时刻可以服务5个人。要实现这种业务需求,用synchronized显然不合适。 阅读全文
posted @ 2017-09-10 13:33 大诚挚 阅读(2083) 评论(0) 推荐(2) 编辑
摘要: 首先试想一个场景: 多个线程都要访问数据库,先要获得一个Connection,然后执行一些操作。为了线程安全,如果用synchronized锁定一个Connection对象,那么任何时候,都只有一个线程能通过Connection对象操作数据库。这样的话,程序的效率太低。反过来,如果每次需要Conne 阅读全文
posted @ 2017-09-03 12:02 大诚挚 阅读(999) 评论(0) 推荐(1) 编辑
摘要: 说Atomic类之前,先聊一聊volatile。 对volatile的第一印象就是可见性。所谓可见性,就是一个线程对共享变量的修改,别的线程能够感知到。 但是对于原子性,volatile是不能保证的。来看看自增操作的问题: i++ 在多线程环境下,是不能保证最终的结果正确的。比如某个时刻,i=5,线 阅读全文
posted @ 2017-09-02 11:33 大诚挚 阅读(2229) 评论(3) 推荐(2) 编辑
摘要: 最近在看Java Threads第三版,收获颇多。全英文阅读,感觉真的是爽歪歪。推荐大家都看看。 这一篇想系统的讲一讲,线程之间通信的2种模式,wait-notify 和 Condition。 先上一个生产者和消费者的例子 这个例子简单、易懂、易读。首先基于synchronized锁定共享资源(da 阅读全文
posted @ 2017-08-26 13:17 大诚挚 阅读(1401) 评论(0) 推荐(0) 编辑
摘要: 前段时间,一直在看《Hotspot实战》,顺便编译了一份OpenJDK的源码,然后就在eclipse里面调试起来。 虽然我的入门语言是c/c++,但是被Java拉过来好几年了,现在再看源码,熟悉又陌生,好在慢慢找到了感觉。 这是分析Hotspot源码的第一篇,讲一下Klass和Oop这两种数据结构。 阅读全文
posted @ 2017-07-22 11:10 大诚挚 阅读(4071) 评论(1) 推荐(0) 编辑
摘要: 前几篇文章主要是去理解JVM类加载的原理和应用,这一回讲一个可以自己动手的例子,希望能从头到尾的理解类加载以及执行的整个过程。 这个例子是从周志明的著作《深入理解Java虚拟机》第9章里抄来的。原作者因为有丰富的经验,可以站在一个很高的高度去描述整个过程。而我只能以现有的水平,简单的理解这个例子。 阅读全文
posted @ 2017-06-03 14:10 大诚挚 阅读(1440) 评论(0) 推荐(0) 编辑