自我介绍
从事了近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
结语
第一次发,防止被认为是抄袭,直接列了下思路。把上面这些都吃透了,玩转各种场景的搭配,应该并发入门没问题吧。上面只是随笔,有遗漏的欢迎补充。