简单聊一聊提到并发想到的东西(java)

146 阅读1分钟

自我介绍

从事了近4年的游戏服务器开发,大多都是mmo类型的手游,语言java。

直奔主题,说一下自己总结的并发相关的内容

不加锁

  • volatile
  • cas(compareAndSwap)
  • Aotamic原子类(也是基于cas)
  • 队列单线程消费
  • 基于AQS实现同步器(两种实现clh和mcs,当然ReentrantLock、Semaphore、ReentrantReadWriteLock、SynchronousQueue、FutureTask等也是基于AQS)

加锁

  • synchronized(优化后特点偏向锁、轻度锁、重度锁可自行google)
  • lock(ReentrantLock、ReentrantReadWriteLock)

锁类型

  • 公平/非公平锁
  • 重入/不可重入锁
  • 独享/共享锁
  • 乐观/悲观锁
  • 自旋锁

常用并发容器(下面只是一部分,可根据需求继续找其他的)

  • 并发map:ConcurrentHashMap
  • 并发List:Vector和CopyOnWriteArrayList
  • 并发set:CopyOnWriteArraySet
  • 并发Queue:ConcurrentLinkedQueue;BlockingQueue;ProrityQueue
  • 并发Dueue:LinkedBlockingDueue

并发进阶

了解Executor、ForkJoin、Akka、Vertx等等

跳出语言层次

了解下并发模型,如actor

结语

第一次发,防止被认为是抄袭,直接列了下思路。把上面这些都吃透了,玩转各种场景的搭配,应该并发入门没问题吧。上面只是随笔,有遗漏的欢迎补充。