240 发简信
IP属地:浙江
  • redis的内存回收策略

    当达到maxmemory限制时,Redis会使用由maxmemory-policy配置的行为。 noeviction:不进行置换,表示即使内存达到上限也不进行置换,所有能引起...

  • Java的四种引用

    强引用:我们常常 new 出来的对象就是强引用类型,只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足的时候 软引用:使用 SoftReference 修饰的...

  • AQS源码浅析(10)——CyclicBarrier

    CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是:让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程...

  • AQS源码浅析(9)——CountDownLatch

    CountDownLatch是共享锁的一种实现, 它默认构造 AQS 的 state 值为 count,允许n(int最大值)个线程阻塞在一个地方,直至所有线程的任务都执行完...

  • AQS源码浅析(8)——Semaphore

    Semaphore(信号量)属于共享锁的一种实现,可以指定多个线程同时访问某个资源 Semaphore 维持了一个可获得许可证的数量,经常用于限制获取某种资源的线程数量 Se...

  • 了解ExecutorService接口

    一个Executor,提供管理终止的方法和可以生成Future以跟踪一个或多个异步任务的进度的方法。 可以关闭一个ExecutorService,这将导致它拒绝新任务。提供了...

  • AQS源码浅析(7)——独占模式ReentrantLock

    ReentrantLock的基本语义与synchronized相同,但相对synchronized更加灵活。ReentrantLock有两种模式:公平模式和非公平模式。 Re...

  • AQS源码浅析(6)——条件队列

    一、ConditionObject数据结构 简单回顾条件队列的数据结构,一个单链表。 条件队列只有在独占模式下才能访问 在条件队列只有CONDITION和CANCELLED状...

  • AQS源码浅析(5)——锁方法

    acquireQueued条件等待方法及独占模式获取 调用acquireQueued方法时,至少有一个node(就是参数中的node)在队列 同时可能有【新入队的线程】或者【...

  • AQS源码浅析(4)——API

    tryAcquire独占模式获取锁 由子类实现,必须支持独占模式 应该检查state值,查看锁对象是否允许以独占模式获取锁 总是由执行获取锁方法的线程调用 如果返回false...

  • AQS源码浅析(3)——同步队列排队方法

    一、 enq往队列里加入一个节点 node以CAS同步的方式插入队列的完整过程。 二、addWaiter根据模式节点创建或者加入队列 根据模式创建节点并加入等待队列。 三、s...

  • 120
    AQS源码浅析(2)——属性及结构

    数据结构 AQS内部是一个双向链表,其中head是一个虚节点。 Node注释翻译 等待队列是“CLH”(Craig、Landin和Hagersten)锁定队列的变体。CLH锁...

  • 120
    AQS源码浅析(1)——类注释概述

    概览 类注释 AQS是一个框架,用于实现依赖先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量、事件等)。此类旨在成为大多数依赖单个原子int值来表示状态的同步器的基础...

  • 程序开多少线程合适, 在项目中该如何考虑?

    IO密集型程序 IO操作时CPU是空闲状态,所以我们要最大化的利用 CPU,不能让其是空闲状态最佳线程数 = CPU核心数/CPU利用率 = CPU核心数 + CPU核心数...

  • 描述一下线程安全的活跃性问题, 竞态条件是怎么产生的, 如何预防死锁?

    死锁 两个或两个以上的线程互相持有对方将要申请的资源,同时等待对方先释放资源。 解决方案 如果不能获取到所有资源进入等待状态时,释放自己持有的资源; 执行前先申请到全部资源再...

  • 怎么自学才好?

    回顾再次放弃学习的两个月,未来自学应该怎么做? 自学原则 1.不要完美主义!!!!接受自己的不完美,接受自己的平凡 每一步计划中都达到“完美”,才进行下一步。最终结果,通常都...

  • 120
    书单

    一、计算机基础 操作系统 《现代操作系统》《程序员的自我修养:链接、装载与库》《操作系统真象还原》《Linux 内核设计与实现》《Windows 程序设计》第五版 计算机网络...

  • java线程优先级

    Java线程优先级 线程优先级是最小是1,最大是10,默认是父线程的优先级,启动main方法线程的优先级一般是5。 线程不一定按照优先级运行 修改线程的优先级不一定有用,看系...

  • 120
    排序算法

    冒泡排序(Bubble Sort) 从左往右对比相邻的两个元素,如果左边的元素更大就交换,越大的元素会经由交换慢慢"浮"到数列的顶端。 算法步骤:1.比较相邻的元素。如果第一...