Hg's blog


  • Home

  • Tags

  • Categories

  • Archives

  • Search

多线程-强软弱虚

Posted on 2021-01-11 | In 多线程

前言

Java中有强软弱虚四种引用。

Read more »

多线程-ThreadLocal

Posted on 2021-01-10 | In 多线程

前言

ThreadLocal的特性和底层实现。

Read more »

多线程-AQS源码分析

Posted on 2021-01-08 | In 多线程

前言

之前我们已经对JUC中的各种同步器有所了解,并且看到了ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore这些同步器内部都是通过AQS(Abstract Queued Synchronizer)来实现的。

我们就来看看AQS的源码。

Read more »

多线程-JUC中的同步工具

Posted on 2021-01-06 | In 多线程

前言

相信JUC和AQS都是大家如雷贯耳、耳熟能详的词儿了。

JUC是大名鼎鼎的java.util.concurrent包的缩写,一看名字就很牛,java提供的并发工具集。而AQS(Abstract Queued Synchronizer)则是JUC包中许多同步工具实现的基础。

我们先来看看JUC包中有哪些东西:

  • atomic原子类:著名的基于CAS的原子操作类。
  • 并发容器:包括ConcurrentMap、ConcurrentSkipListSet、CopyOnWriteArraySet、ConcurrentLinkedQueue、Dequeue等等。而创建线程池的一个重要参数:workQueue,一般就出自这里。
  • 线程池:
    • 异步机制常用的Future、Callable
    • 线程池ThreadPoolExecutor以及四种预定义的线程池SingleThreadExecutor、CachedThreaadPool、FixedThreadPool、SecheduledThreadPool
  • 同步工具
    • AQS
    • Lock:ReentrantLock、ReadWriteLock、LockSupport
    • 其他工具:CountDownLatch、CyclicBarrier、Phaser、Semaphore、Exchanger

几乎囊括了所有和多线程相关的内容。

本文我们先来总结一下JUC中的同步工具。

Read more »

多线程-synchronized底层实现

Posted on 2021-01-03 | In 多线程

前言

synchronized在JDK1.6的优化之后,性能上有了较大的提升。

synchronized优化的内容是锁升级机制。

  • 偏向锁、自旋锁、重量级锁
  • 锁升级条件、过程
  • 底层实现
Read more »

多线程-JMM

Posted on 2021-01-02 | In 多线程

前言

在多线程编程之中,通常我们最常需要考虑的是两个问题:1. 竞争问题;2. 协调问题。

竞争问题是指多个线程对同一个资源的竞争,比如:需要修改同一个变量、写同一个文件或者修改数据库的同一条记录……

对于竞争问题,我们通常通过锁机制来保证同一个资源每次只能被一个线程访问。

至于协调问题,一般又分为两种:1. 协调多个线程执行的操作的顺序;2. 多个线程间信息的传递

事实上,问题1往往也是通过问题2来解决的,比如:

一个线程继续向下执行的条件是判断某个变量是否为 true

而另一个线程中,将该变量的值设为 true

实际上,就是一个线程通过共享变量,向另一个线程传递了信息,从而控制了其执行的行为

因此,协调问题,最终又可归结为多线程间信息的传递。

Java中,多线程间的信息传递是靠共享变量实现的。而 JMM(Java Memory Model / java内存模型) 可以说是Java提供的一系列准则和规范,旨在帮助程序猿们准确、高效地解决多线程编程中的协调问题(在JMM中称之为同步问题 Synchronzation)。

我们在很多文章、很多地方听到的许多很难望文生义的名词(诸如:顺序一致性、happens-before原则、内存可见性、MESI等),都来自于JMM。甚至于JMM本身,从其字面意义就很难理解这到底是个什么玩意儿。

Read more »

多线程-基础

Posted on 2021-01-01

前言

  • 进程、线程、协程/纤程
  • 线程的创建
  • Thread的常用方法
  • 线程状态机
  • synchronized、volatile
Read more »

Redis-哨兵(Sentinel)

Posted on 2020-11-09 | In Redis

前言

Redis 哨兵(Sentinel)的官方文档: Redis Sentinel Documentation

简而言之,哨兵机制是Redis高可用性的保障。

本文主要对该官方文档进行了翻译,同时也结合源码做了部分注解。

Read more »

Redis-主从复制

Posted on 2020-11-07 | In Redis

前言

Redis提供的Replication(复制)特性,能够通过很简单的配置,实现Redis服务器的主从复制功能。

不过,通常不会只单独使用Replication,而是会搭配Sentinel(哨兵)实现主备高可用或者搭配Cluster(集群)实现数据分片的高可用集群。

本文仅介绍Replication相关配置和特性。

Read more »

Redis-持久化

Posted on 2020-11-02 | In Redis

前言

Redis提供了持久化功能,将内存中的数据定期备份或通过命令导出到硬盘上,启动时,若检测到备份文件,会首先从备份文件中恢复数据到内存。

Read more »
12

Hg

17 posts
4 categories
30 tags
© 2021 Hg
Powered by Hexo
|
Theme — NexT.Pisces
访问人数 访问总量 次