1 线程同步有策略类 :
(1) synchronized
通过在代码块或方法上加上 synchronized
关键字,可以实现对代码块或方法的同步访问。当一个线程获取到了对象的锁资源,其他线程就无法进入该代码块或方法,只能等待锁资源的释放
(2) ReentrantLock
它是显示锁的一种实现,提供了可重入的锁机制,与 synchronized
关键字相比,ReentrantLock
提供了更高的灵活性和额外的功能,例如设置等待时间、中断等待、公平性
补充: Condition
类:与 ReentrantLock
类一起使用,通过创建多个 Condition
对象,可以实现更加精细化的线程等待和唤醒机制
(3) Semaphore
通过设置信号量的数量,可以控制同时访问某个资源的线程数量
(4) CountDownLatch
通过设置计数器的值,可以控制某个任务等待其他一组任务完成后再执行
(5) CyclicBarrier
通过设置参与线程数量,当所有线程都达到栅栏点后,所有线程会被释放,并继续执行
2 CAP 理论和 Base 理论
(1) cap理论:
一致性: 在分布式系统中的多个副本或节点之间,保持数据的一致性。也就是说,如果有多个客户端并发地读取数据,在任何时间点上,它们都应该能够观察到相同的数据
可用性:在分布式系统中的多个副本或节点之间,保持数据的一致性。也就是说,如果有多个客户端并发地读取数据,在任何时间点上,它们都应该能够观察到相同的数据
分区容错: 指系统在遇到网络分区或节点失效的情况下,仍能够继续工作并保持数据的一致性和可用性
结论:
在分布式系统中,不能同时满足一致性、可用性和分区容错性这三个特性,只能是 CP
或者是 AP
。
-
CP
:强一致性和分区容错性设计。这样的系统要求保持数据的一致性,并能够容忍分区故障,但可用性较低,例如在分区故障期间无法提供服务。 -
AP
:高可用性和分区容错性设计。这样的系统追求高可用性,而对一致性的要求较低。在分区故障期间,它可以继续提供服务,但数据可能会出现部分不一致。
(2) BASE
理论:
BASE
理论是对分布式系统中数据的一致性和可用性进行权衡的原则,它是对 CAP
理论的一种补充
基本可用性:系统保证在出现故障或异常情况下依然能够正常对外提供服务,尽管可能会有一定的性能损失或功能缺失。在分布式系统中,为了保证系统的可用性,有时会牺牲一致性。
软状态:系统中的数据的状态并不是强一致的,而是柔性的。在分布式系统中,由于网络延迟、节点故障等因素,数据可能存在一段时间的不一致。
最终一致性:系统会保证在一段时间内对数据的访问最终会达到一致的状态。即系统允许数据副本在一段时间内存在不一致的状态,但最终会在某个时间点达到一致。