什么是线程的同步了?就是在多个线程访问一个数据的时候,如何防止数据的一致性和避免竞争问题
1.Synchronized关键字,给线程上锁,相当于小朋友在排队玩玩具,一个玩完才能接着下一个
2.ReentrantLock:可重入锁,就是一群人在上厕所,但是厕所的开关被进入的那个人给锁住了,只有这个人上完了厕所才能打开厕所,让下一个人上厕所
3.wait和notify和notifyall(),通过Object类中的方法让线程进行等待或者进行唤醒,从而实现线程的同步
4.CountDownLatch和CyclicBarrier:
其是java并发包中的,
CountDowLatch是门闩倒计时,比如一个线程是一个人,大家出去旅游,所有人到齐了再出发,到了一个人,那个倒计时减1,这么回事
CyclicBarrier是大家一群人出去旅游途中,到达了一个地方以后,等一下其他人,直到所有人都到了然后再出发,这就是CyclicBarrier