四丶多线程的基础补漏
一丶死锁产生的原因
1.互斥:同一时间的只有一个线程可以占有资源
2.占有且等待:线程T1占有用资源X,且等待着资源Y,但是不释放资源X
3.不可抢占:线程T1占有资源X的时候,其他线程不能抢占当前资源
4.循环等待:线程T1等待线程T2占用的资源,线程T2等待着线程T1占用的资源。
二丶ThreadJoin()
1.TreadJoin(),可以让线程结果对其他线程可见,并不是串行的执行。
三丶ThreadLocal
1.ThreadLocal其实是对共享变量进行了隔离,从而保证线程的安全。
四丶关于Volatile关键字
1.使用volatile修饰的数组是线程可见的吗?
对于数组可见,但是对于数组的中的元素不具备可见性。