一、好言
不要动不动就倾其所有,与其卑微到尘土里,不如留一些骄傲与疼爱给自己,最卑贱不过感情,最凉不过人心
二、背景
上周面试了一家,结果自己在线程那一块表现的太差了,所以之后就开始看书,加深下理解,三天时间,看了晚这本多线程的基础的书本,至少现在对于一些基本的东西有个大致的了解,然后打算这周把《Java并发编程的艺术》给啃了,这本就是比较深入的,其实之前看网上说的,没有看过内存模型就不要说自己懂多线程,任重而道远哦。
三、观后感受
其实这是一本入门的基础的书,都是很基础的知识,看完应该懂以下知识点
(1):synchronized重量级锁,synchronized同步方法块,同步代码块,这里面获取的都是对象锁。synchronized给static方法加锁是给Class类上锁。synchronized加到非static静态方法上是给对象上锁。
synchronized使用"对象监视器"原理做为同步。
(2):volatile的作用是使得变量在多个线程间可见。其主要通过强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取变量的值。
(3):wait()释放锁,notify()不释放锁,sleep也不释放锁。
(4):join方法,其作用是使得线程排队运行。join在内部使用wait方法进行等待。
(5):ThreadLocal是使得每一个线程都有自己的值。即是线程的私有数据。这里需要注意的是InheritableThreadLocal,如果子线程在取得值的同时,主线程InheritableThreadLocal中的值进行修改,那么子线程取到的值还是旧值。
(6):ReentrantLock实现同步效果,比synchronized更加灵活。
Lock lock = new ReentrantLock();
lock.lock()方法获锁。lock.unlock()释放锁。
(7):Condition condition = lock.newCondition();Condition可以实现多路通知。在Lock对象中创建多个Condition实例,线程对象注册绑定在Condition中,从而选择性进行线程通知,在调度上更加灵活。
(8):公平锁:公平锁表示线程获取锁的顺序是按照线程加锁的顺序来分配的,即是先得得FIFO先进先出的顺序。
非公平锁:是一种获取锁的抢占机制,随机获取锁的。这种方式可能造成某些线程一致拿不到锁,结果就不公平了。
(9):单列模式在多线程中的问题,这里我们也应该知道了懒汉模式,饿汉模式,DCL双重检查机制。
个人觉得上述九点是很重要的部分。