摘要:
一 . 概述 在之前的Thread类之中有线程挂起和停止等操作,但是这些方法都被废弃了. 在JUC之中,提供了LockSupports类可以完成线程的挂起等操作了. 二 .例子 在这个例子中,我们使用park()方法挂起了当前的线程,因此子线程在打印了线程启动之后就被挂起了. 主线程在3秒之后就重启 阅读全文
摘要:
一 . 概述 该类描述的是一个交换空间,我们可以理解为我们的生产者和消费者模型之中的缓冲区. 二 . 类结构 构造方法: 这个类的构造需要一个泛型,表示需要交换的数据. exchange()交换数据. 当传入null的时候表示从缓冲区中获取数据. 三 . 例子 我们模拟一个生产者和消费者的模型 注意 阅读全文
摘要:
一 . 概述 在之前我们介绍了CountDownLatch和CyclicBarrier两个类. 其中,CountDownLatch是凑足信号量启动一个线程运行,而CyclicBarrier是凑够信号量将原先阻塞的线程全部启动. 现在我们需要介绍一个信号量类 Semaphore. 说到信号量,大家都不 阅读全文
摘要:
一 . 概述 在之前我们说到了CountDownLatch,现在要说的这个CyclicBarrier和CountDownLatch差不多. 我们通过类的结构慢慢分析. 二 . 类的结构 构造函数一: 需要一个int值表示需要参与的线程数量 这个构造函数多了一个Runnable的线程任务,这个构造函数 阅读全文
摘要:
一 .概述 在前面我们时候说到了使用Condition实现线程的精确控制,但是我们在日常使用的时候我们发现我们的并发总是有一些规律. 比如在某些线程完成任务之后,该线程才开始,这样的场景总是并发场景中经常出现的. 为此,JUC提供了并发的辅助类帮助我们简化这种线程并发场景的实现. 二 . Count 阅读全文
摘要:
一 . 概述 在之前我们我们线程之间进行通信使用的是内置锁的wait()方法和notify()实现的,而我们使用了高级锁之后,就可以使用Condition进行条件控制, 通过精确的控制我们能够完成更简单的线程控制. 二 .Condition的使用 下面我们定义三个线程,让他们按照次序进行输出. 我们 阅读全文