Java并发编程之AQS

什么是 AQS

同步工具类 也叫同步器(Synchronizer)。在使用同步器时,我们发现不同的同步器存在许多共同点,例如 ReentrantLock 和 Semaphore 都支持每次允许一定数量线程通过/等待/取消,也都支持让等待线程执行公平或非公平的队列操作等。

事实上,很多同步工具类在实现时都使用了共同的基类,这就是 AbstractQueuedSynchronizer(AQS),抽象队列同步器

阅读更多

Java并发编程之对象共享

对象数据共享

要实现多个线程之间的数据共享,需要考虑两个问题:

  • 通信:通信是指消息在两条线程之间传递
  • 同步:既然要传递消息,那 接收线程发送线程 之间必须要有个先后关系。此时就需要用到同步,即控制多条线程之间的执行次序。
阅读更多

Java并发编程之异步任务

有时候,我们想在主线程之外执行一些异步任务,不难想到,可以开一个新线程专门去处理某个任务。在 Java 中处理异步任务都有哪些需要注意的呢?

阅读更多

Java并发编程之并发工具

Java自带的平台类库(java.util.concurrent)里面包含了很多有用的工具,来帮助我们更好地处理并发问题。这一篇主要介绍一下几类工具:

  1. atomic原子类:AtomicLong
  2. 同步容器类:Vector、Hashtable
  3. 并发容器类:concurrentHashMap、ConcurrentLinkedQueue、BlockingQueue(阻塞队列)
  4. 并发工具类:闭锁(Latch)、栅栏(Barrier)、信号量(Semaphore)
阅读更多

Java并发编程之安全性

并发编程显然有很多优势,然而,多线程也带来了一定的风险。例如安全性问题、活跃性问题、性能问题等。

  • 安全性问题: 含义是“永远不发生糟糕的事情”,例如多个线程同时修改一个共享变量,导致结果跟预期不符。
  • 活跃性问题: 关注“某件正确的事情最终会发生”,假若不能,就会产生活跃性问题。例如死锁,A、B进程互相等待对方释放某资源,结果谁也执行不下去。
  • 性能问题: 在解决安全性问题和活跃性问题的时候会带来额外开销,我们必须想办法减少开销。

并发编程的问题,在Java简明笔记(十一) 并发编程中就有提及,这一篇,主要就安全性问题,详细谈谈Java并发编程的问题。

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×