摘要: 使用 信号量(Semaphore)允许多个线程同时访问临界区资源,而 ReentrantLock 这类锁同时只允许一个线程访问临界区资源。 Semaphore 就是共享锁,它的构造方法可以传一个许可数 permits,表示临界区资源数量,多少个资源同时也最多只能由多少个线程来访问。当 permits 阅读全文
posted @ 2021-12-05 19:23 唯学而知 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 使用 CyclicBarrier 类可以实现一组线程相互等待,当所有线程都到达某个屏障点后再进行后续的操作。 CyclicBarrier 也可以实现类似 CountDownLatch 的功能,而且比 CountDownLatch 更强大,因为 CyclicBarrier 可以重复被使用。 代码示例: 阅读全文
posted @ 2021-12-05 17:14 唯学而知 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 使用 CountDownLatch 类似于 Thread 的 join 方法,使用时,先构造 CountDownLatch 对象,构造函数传线程数据数 n,表示等待这 n 个线程都完成后再执行主线程代码。 主线程使用 await 方法阻塞等待 n 个线程执行完成;n 个线程执行完成后调用 count 阅读全文
posted @ 2021-12-05 00:31 唯学而知 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 线程池创建与使用 线程池的创建 Executors 框架提供了各种类型的线程池,主要有以下工厂方法∶ public static ExecutorService newFixedThreadPool(int nThreads) public static ExecutorService newCac 阅读全文
posted @ 2021-12-02 10:11 唯学而知 阅读(86) 评论(0) 推荐(0) 编辑
摘要: Future 使用 Future 的使用: 使用线程池创建 Future 对象 ExecutorService executorService = Executors.newSingleThreadExecutor(); Future future = executorService.submit( 阅读全文
posted @ 2021-11-26 18:56 唯学而知 阅读(301) 评论(0) 推荐(0) 编辑