1、什么是线程安全?
线程安全是指多个线程同时访问同一个类时,如果不需要额外的同步,这个类的行为仍然是正确的。原子操作是线程安全的,锁就是要把复合操作变成原子操作。比较常见的复合操作有:
1)、读 - 写 - 改
2)、检查再修改
public class Instance() {
private Instance in = null;
public Instance getInstance() {
if(in == null) { // 如果两个线程同时执行到这里就会有同步问题
in= new Instance();
}
return in;
}
}
1、什么是线程安全?
线程安全是指多个线程同时访问同一个类时,如果不需要额外的同步,这个类的行为仍然是正确的。原子操作是线程安全的,锁就是要把复合操作变成原子操作。比较常见的复合操作有:
1)、读 - 写 - 改
2)、检查再修改
线程控制逃逸规则
如果一个资源的创建、使用和销毁都是在一个线程里面完成的,而且永远不会脱离该线程的控制,则该资源的使用就是线程安全的。线程控制逃逸规则可以判断代码中对某些资源的访问是不是线程安全的。
2、分布式与集群
简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是以提升单位时间内执行的任务数来提升效率的。
例如,一个任务可以分成10个子任务,每个子任务需要1个小时。如果只有一台服务器,那么需要10个小时完成任务。
如果采用分布式解决方案,提供10台服务器,每个服务器处理其中的一个子任务,那么完成任务只需要一个小时。
如果采用集群解决方案,同样提供10台服务器,每个服务器可以独立完成一个任务,那么10个任务只需要10个小时就完成了,最终达到的效果也是一个小时完成一个任务。
集群的两大关键特性:
- 可扩展性:新的服务实体要可以加入到集群中
- 高可用性:一个服务实体挂了,一定有另外一个服务实体来接替它
集群的两个关键能力:
- 负载均衡:把任务均衡的分布到不同的服务实体上
- 错误恢复:一个服务实体不能工作,要有另外一个实体来替换它
集群大致分为:高可用集群、负载均衡集群、科学计算集群。
总体来说,集群与分布式的区别主要有以下几点:
- 分布式主要是将不同的业务分布在不同的地方,而集群是把几台服务器集中在一起处理同一业务。
- 分布式的每一个节点可以做集群,但是集群并不一定是分布式的。
1、什么是线程安全?
线程安全是指多个线程同时访问同一个类时,如果不需要额外的同步,这个类的行为仍然是正确的。原子操作是线程安全的,锁就是要把复合操作变成原子操作。比较常见的复合操作有:
1)、读 - 写 - 改
2)、检查再修改