线程和锁学习笔记

在线程设计中,保证线程安全是一个很重要的部分。

在数据处理中,我们会尽量减少共享数据的产生,如果共享数据必要,我们也会尽量将数据设置为不可变类型。当数据一定要是可变类型时,尽量此时用一个方法调用。

就算是数据设置成了final,也只能保证指针指向地址不变,不能保证数据不变。

 

 

 

这些条件在实际应用里很难满足。

因此,为了保证线程安全,我们引入了锁的机制。

锁:赋予一个线程对于此数据的独家更改权,该线程进行时获得锁,结束时释放锁给下一线程。

不同锁之间不会相互干扰,共享同一锁的线程一次也会只运行一个,直到上个线程的锁被释放。

如图,线程A,B要访问同一地址数据,C,D同一地址,当锁在B,C手上时,A,D访问不了数据,但因为AB,CD不是一把锁,所以不影响C,B线程的执行顺序,BC互不干扰

posted @ 2020-07-11 00:10  羽生的老婆  阅读(107)  评论(0)    收藏  举报