![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发基础
文章平均质量分 64
「已注销」
这个作者很懒,什么都没留下…
展开
-
线程池的基础概念及应用
线程池的优点 1、线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。 2、可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃。 public ThreadPoolExecutor(int corePoolSize, 2 int maximumPoolSize, ...原创 2018-08-20 12:10:23 · 451 阅读 · 0 评论 -
分布式面试之Solr以及redis的面试问题
redis之雪崩问题的解决:首先redis做缓存,应用场景一般如下: Redis做缓存是最常见的应用场景。客户端请求在缓存层命中就直接返回,如果miss就去读取存储层,存储层读取到就写入缓存层,然后再返回到客户端。 优点: 加速读写 降低后端负载 缺点: 数据的不一致性 代码维护成本 运维成本 缓存穿透化: 然而缓存可能会遇到这种问题:请求cache拿不到数据,就会去存...原创 2018-09-30 10:44:05 · 17584 阅读 · 0 评论 -
多线程之同步代码块与锁
上篇的代码,存在一个问题,那就是多线程有可能操作到同一个资源块,解决这个问题的方式就是同步代码快或者加上锁。锁的作用就是让资源的占用总是被一个线程调用,而不会使多个线程发生抢占。 那么如何解决线程安全问题呢,第一是同步代码快: package com.qf.duoxian; public class Ticket1 implements Runnable { public Ticket...转载 2018-10-03 22:00:46 · 259 阅读 · 0 评论 -
并发编程之线程池详解
常见的四种线程池和区别 线程池能有效的处理多个线程的并发问题,避免大量的线程因为互相强占系统资源导致阻塞现象,能够有效的降低频繁创建和销毁线程对性能所带来的开销。真正线程池的实现是通过ThreadPoolExecutor,ThreadPoolExecutor通过配置不同的参数配置来创建线程池。下面简单的介绍一下各个线程池的区别和用处。 (1)fixThreadPool 正规线程 ...转载 2018-10-02 21:15:13 · 185 阅读 · 0 评论 -
Redis的持久化也就是RDB与AOF
Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。 RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。 打开 redis.conf 文件,找到 SNAPSHOT...转载 2018-09-06 13:07:58 · 141 阅读 · 0 评论 -
浅谈反向代理与负载均衡
正向代理指的是人们通过PC端发出请求,之后地理服务器会按照地址去找相对应的服务器,直接对相应地址进行访问。特点是PC端直接发送请求并且指定目标,代理会直接按照发过来的请求去找原始服务器并将返回的信息传到页面。PC端才能使用正向代理。正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。使用Pro...原创 2018-09-05 21:03:45 · 339 阅读 · 0 评论 -
并发编程之并发包详解
并发是一种能并行运行多个程序或并行运行一个程序中多个部分的能力。如果程序中一个耗时的任务能以异步或并行的方式运行,那么整个程序的吞吐量和可交互性将大大改善。现代的PC都有多个CPU或一个CPU中有多个核,是否能合理运用多核的能力将成为一个大规模应用程序的关键。 Java基础部分知识总结点击Java并发基础总结。Java多线程相关类的实现都在Java的并发包concurrent,concur...转载 2018-08-20 16:51:50 · 1282 阅读 · 0 评论 -
并发编程之ArrayBlockingQueue
ArrayBlockingQueue是一个用数组实现的有界阻塞队列,此队列按照先进先出(FIFO)的原则对元素进行排序。 ArrayBlockingQueue默认情况下不保证线程公平地访问队列,即阻塞的线程,不一定按阻塞的先后顺序访问队列,非公平性也是为了提高吞吐率。 ArrayBlockingQueue源码详解 ArrayBlockingQueue类定义为: public class ...原创 2018-08-20 13:18:02 · 151 阅读 · 0 评论 -
并发编程之队列详解
LinkedBlockingDeque是一个由链表结构组成的双向阻塞队列,即可以从队列的两端插入和移除元素。双向队列因为多了一个操作队列的入口,在多线程同时入队时,也就减少了一半的竞争。 相比于其他阻塞队列,LinkedBlockingDeque多了addFirst、addLast、peekFirst、peekLast等方法,以first结尾的方法,表示插入、获取获移除双端队列的第一个元素。以l...原创 2018-08-20 12:32:03 · 228 阅读 · 0 评论 -
线程池详解
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样...转载 2019-03-14 09:18:30 · 141 阅读 · 0 评论