线程同步工具类 | 学习笔记

简介: 快速学习线程同步工具类。

开发者学堂课程【Java 面试疑难点串讲1:面试技巧及语言基础:线程同步工具类】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/24/detail/525


线程同步工具类


内容介绍

一、线程同步工具类


一、线程同步工具类

CvcleBarrier CountDownLatch 区别及实现原理。

这两个类是 java.util.concuent 定义的操作类,主要的功能是进行线程同步处理的工具类。

特征:

CyvcleBarrier 相当于汇聚多个等待线程,都到了,一起干;

CountDownLatch 等待所有人都走了,我再干。

范例:观察 CountDownLatch

package vshop;

import java.util.concurrent.CountDownLatch;

public class Demo {

public static void main(string[] args) throws Exception {

CountDownLatch down = new CountDownLatch(2);//两个走了

for (int x = 0; x<2; x++) {

new Thread(()->{

System.out.println(Thread.currentThread().getName() +",运行结束");

down.countDown(); //相当于执行一个减

}).start();

down.await(); //等其余的线程执行完了,我再放行,这个时候进入到了一个阻塞状态

 

System.out.println( "FINISH】全部线程执行结束。");

    }

}

 就是执行了一个阻塞的操作处理。CycleBarrier 是一个互相等待状态。

import java.util.concurrent.cyclicBarrier;

public class Demo {

public static void main(string[ ] args) throws Exception {

CyclicBarrier barrier = new CyclicBarrier(2);//两个人一条船

for (int x = 0; x < 3; x++) { //走一次

new Thread(() -> {

System.out.println("" +Thread.currentThread( ).getName() + " - BEFORE】线程等待。。。" );

try {

barrier.await();//等够两个人就走

} catch (Exception e) {

e.printstackTrace();

           }

System.out.println("" +Thread.currentThread( ).getName( ) + " AFTER】开船走。。。");

}).start();

}

System.out.println( " FINISH】全部线程执行结束。");

   }

}

本质区别:

CountDownLatch 是一计到底,也就是说如果你一开始设置了2个计数线程就一直减,不能重置;

CycleBarrier 可以进行重置处理;

相关文章
|
2月前
|
调度
多线程学习笔记
这篇文章是多线程学习笔记,涵盖了线程与进程的概念、多线程实现方式、线程状态、线程同步与不安全示例、死锁问题以及生产者与消费者问题等多线程编程的关键知识点。
多线程学习笔记
|
2月前
使用通义灵码写了一个多线程工具类,通义灵码处于什么水平
当方法间无依赖需提升执行效率时,可采用并行执行。示例通过`MultiThreadTaskExecutor`类实现多线程并发,其中`executeParallelDynamicMethods`方法接收一系列`Callable`任务并返回所有任务的结果列表。测试显示,四个耗时方法并行执行仅需4秒,相较于串行执行的12秒显著提升效率。该代码展示了良好的多线程编程实践。
42 0
|
3月前
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
47 1
|
3月前
|
安全 Java 开发者
Java中的并发工具类与线程安全实现
Java中的并发工具类与线程安全实现
|
3月前
|
设计模式 缓存 安全
Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
32 0
|
3月前
|
设计模式 存储 缓存
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
45 0
|
3月前
|
设计模式 并行计算 安全
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
41 0
|
3月前
|
设计模式 安全 NoSQL
Java面试题:结合单例模式与Java内存管理,设计一个线程安全的单例类?分析Java多线程工具类ExecutorService与Java并发工具包中的工具类,设计一个Java并发框架的分布式锁实现
Java面试题:结合单例模式与Java内存管理,设计一个线程安全的单例类?分析Java多线程工具类ExecutorService与Java并发工具包中的工具类,设计一个Java并发框架的分布式锁实现
45 0
|
3月前
|
设计模式 存储 缓存
Java面试题:结合单例模式与Java内存模型,设计一个线程安全的单例类?使用内存屏障与Java并发工具类,实现一个高效的并发缓存系统?结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:结合单例模式与Java内存模型,设计一个线程安全的单例类?使用内存屏障与Java并发工具类,实现一个高效的并发缓存系统?结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
27 0
|
3月前
|
监控 Java
Java面试题:Java内存、多线程与并发工具包的深度探索,Java内存管理策略及其优化技巧,Java多线程并发控制的工具类与机制,Java并发工具包在实际项目中的应用
Java面试题:Java内存、多线程与并发工具包的深度探索,Java内存管理策略及其优化技巧,Java多线程并发控制的工具类与机制,Java并发工具包在实际项目中的应用
28 0