Java多线程总结(上部分)面试题解答

    自去年列下计划到现在一年有余,看了好几本书,以为已经过了很长时间,现在回头发现仅仅才过了一年而已,已经积累了不少知识,看来有目的的去学习还是有一些成效的。正好今天看到一个关于多线程的面试题,所以来总结过去所学,也是对过去知识的一个考验。

继续阅读“Java多线程总结(上部分)面试题解答”

细说Java的内存模型

    多线程之所以复杂,是因为在多线程环境下,稍有不慎就会导致诡异的问题。这个诡异表现在,他不是一定会出现,他不知道会在什么时候会以什么样的姿态出现在我们的生产环境中。为了避免犯错误,所以我们在所有可能出问题的地方都加上synchronize,那当然也是欠妥的,所以我们要搞清楚其中的细节,对我们写程序就有比较大的帮助了。

继续阅读“细说Java的内存模型”

Java的锁

一、锁的使用
Java的多线程环境下,由于共享资源的竞态可能导致错误的结果。因此锁的使用就是保护临界代码,这个就不再赘述。
代码: 没有锁的时候,临界区没有保护,可能出现错误的结果(出错概率跟你的并发程度有关,小概率事件),尽管代码比较简单,可以通过其他手段来规避多线程问题,这里还是以这个代码为例,仅仅用来说明多线程问题

继续阅读“Java的锁”

理解Java线程间的通信

多个线程间肯定是需要通信的,回忆一下我们的并发编程模型里的流水线工作模式(流水线工作模式),我们的线程在遇到io阻塞的时候,肯定不能在那边一直等着,得出让自己的cpu资源,等到io完成了,再把任务交给下一个工作线程,我们试着来实现下看看。

继续阅读“理解Java线程间的通信”