《java高并发编程详解》第0集

        昨天晚上终于阅读完《java高并发编程详解》这本书。get到了不少新姿势。这本书是在我看完《深入理解java虚拟机》之后才开始学习的,有些知识点在java虚拟机书中有过讲解,在看编程详解时又复习了一遍,感觉jvm在并发编程的方面确实做了很多优化,从指令集到编程规范,指导我们进行安全高效的并发编程,尤其是Sychronized的不断优化,并发包的使用,还有线程池的集成。无不体现java在并发编程时做的努力。

        并发和并行两个概念是java编程中经常遇到的概念。多线程同时运行的条件下,如果有资源争用,那么就是并发,否则就是并行。

       书中详细讲解了线程和进程的关系,讲解了线程的5大状态:new runnable running blocking dead。

五种状态之间有状态转换。而blocking和running状态的线程可以被打断,即通过调用 Thread.interrrupt()的方法主动中断睡眠或者资源等待。

        Thread的yield(),interrrupt(),sleep(),join()方法是线程自带的方法,分别是放弃锁资源,cpu资源;中断线程当前状态,睡眠(不放弃资源),等待当前线程执行完之后执行(放弃资源)。

        对象Object的wait(),notify(),notifyAll()方法,wait()方法是当前线程放弃锁进入对象的waitSet,notify是放弃锁,并唤醒waitSet内的一个线程,notifyAll()则是唤醒所有waitSet的线程。

        在java虚拟机就讲过jvm内存模型和jvm内存分布;并发编程主要讲的是内存模型,线程私有内存和线程公共内存之间的load和store操作步骤。jvm编程要求了并发的时候要注意三大要素:原子行,有序性,可见性。

        volatile 和sychronized的区别在于 volatile 只能保证有序性和可见性,没有保证原子性,所以作为严格要求的并发,volatile其实不能满足要求。

        另外,书中还讲了一些并发的开发模式,生产者消费者模式/per-thread-message模式/流水线模式/activeObjects模式/event-bus模式/event-driven-architve模式。这些将在接下来的文章中讲解

 

 

你可能感兴趣的:(java,并发,编程)