线程和锁学习笔记
在线程设计中,保证线程安全是一个很重要的部分。
在数据处理中,我们会尽量减少共享数据的产生,如果共享数据必要,我们也会尽量将数据设置为不可变类型。当数据一定要是可变类型时,尽量此时用一个方法调用。
就算是数据设置成了final,也只能保证指针指向地址不变,不能保证数据不变。
这些条件在实际应用里很难满足。
因此,为了保证线程安全,我们引入了锁的机制。
锁:赋予一个线程对于此数据的独家更改权,该线程进行时获得锁,结束时释放锁给下一线程。
不同锁之间不会相互干扰,共享同一锁的线程一次也会只运行一个,直到上个线程的锁被释放。
如图,线程A,B要访问同一地址数据,C,D同一地址,当锁在B,C手上时,A,D访问不了数据,但因为AB,CD不是一把锁,所以不影响C,B线程的执行顺序,BC互不干扰

浙公网安备 33010602011771号