解释并发与并行,并说明两者关系 (1)并发:并发运行就是把两个或两个以上的任务切割,在不同的时间片段内,cpu切换执行不同的任务,我们的电脑在工作过程中,可以同时运行很多软件,在我人看来,多个软件应用是同时在工作的,但从微观看,每个软件都是在不断切换的,cpu的工作分为很多个时间片,每个时间片都会切 ...
分类:
系统相关 时间:
2019-04-26 00:04:08
阅读次数:
201
在个推的推送场景中,消息队列在整个系统中占有非常重要的位置。当APP有推送需求的时候,会向个推发送一条推送命令,接到推送需求后,我们会把APP要求推送消息的用户放入下发队列中,进行消息下发;当同时有多个APP进行消息下发时,难免会出现资源竞争的情况,因此就产生了优先级队列的需求,在下发资源固定的情况下,高优先级的用户需要有更多的下发资源。
分类:
Web程序 时间:
2019-04-15 14:22:43
阅读次数:
205
原文:Redis分布式锁在多线程开发中我们使用锁来避免线程争夺共享资源。在分布式系统中,程序在多个节点上运行无法使用单机锁来避免资源竞争,因此我们需要一个锁服务来避免多个节点上的进程争夺资源。 Redis数据库基于内存,具有高吞吐量、便于执行原子性操作等特点非常适合开发对一致性要求不高的锁服务。 本... ...
分类:
其他好文 时间:
2019-04-08 22:59:40
阅读次数:
240
1、zookeeper概念介绍 在介绍ZooKeeper之前,先来介绍一下分布式协调技术,所谓分布式协调技术主要是用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种共享资源,防止造成资源竞争(脑裂)的后果。 这里首先介绍下什么是分布式系统,所谓分布式系统就是在不同地域分布的多个服务 ...
分类:
其他好文 时间:
2019-03-23 13:00:33
阅读次数:
165
控制组( CGroups)是 Linux 内核的一个特性,主要用来对共享资源进行隔离、限制、审计等。 只有将分配到容器的资源进行控制,才能避免多个容器同时运行时对宿主机系统的资源竞争。每个控制组是一组对资源的限制,支持层级化结构。 控制组技术最早是由 Google 的程序员在 2006 年提出的, ...
分类:
其他好文 时间:
2019-03-08 23:45:05
阅读次数:
230
HashTable线程安全,效率非常低,锁的资源竞争 多线程共享同一个HashTable HashTable加锁了,影响效率。每次只能有一个线程去操作 put 和 get 只能有一个线程可以操作。 jdk5之后,引入了CurrentHashMap<K,V> 分段锁: 一个整体拆分成16段。每段是一个 ...
分类:
其他好文 时间:
2019-02-05 09:12:21
阅读次数:
176
Linux的原子操作与同步机制 并发问题 现代操作系统支持多任务的并发,并发在提高计算资源利用率的同时也带来了资源竞争的问题。例如C语言语句“count++;”在未经编译器优化时生成的汇编代码为。 当操作系统内存在多个进程同时执行这段代码时,就可能带来并发问题。 假设count变量初始值为0。进程1 ...
分类:
系统相关 时间:
2019-01-31 13:25:22
阅读次数:
232
1、多任务资源竞争问题 示例: 执行结果: 程序执行过程: 一人打印一个字符,这样就乱了。 ...
分类:
其他好文 时间:
2019-01-16 15:01:08
阅读次数:
173
一、简介 1、原子操作 我们在使用变量的时候,经常会出现资源竞争的情况,为了保证变量安全,我们就会对对应的方法添加"synchronized"同步锁来达到目的,以保证线程安全。 而原子操作时一种线程安全的操作,在操作执行期间不会穿插任何操作。这意味着,我们不需要使用synchronized等同步串行 ...
分类:
编程语言 时间:
2018-12-23 16:56:40
阅读次数:
217
一、要引入Executor线程池框架的原因1.new Thread()的缺点(1)每次调用new Thread()都会耗费性能;(2)通过new Thread()创建的线程缺乏管理,被称为野线程,可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪,以及不能进行定时执行、定期执行、线程中 ...
分类:
编程语言 时间:
2018-12-22 23:26:57
阅读次数:
301