当前位置: 首页 > news >正文

juc面试题

一:线程同步的方式有哪些?

线程同步指的就是让多个线程之间按照顺序访问同一个共享资源

  1. synchronized:Java中最基本的线程同步机制,可以修饰代码块或方法,保证同一时间只有一个线程访问该代码块或方法,其他线程需要等待锁的释放。
  2. ReentrantLock:可以保证同一时间只有一个线程访问共享资源,但是更灵活,支持公平锁、可中断锁、多个条件变量等功能。
  3. Semaphore:允许多个线程同时访问共享资源,但是限制访问的线程数量。可以用于控制并发访问的线程数量,避免系统资源被过度占用。
  4. CountDownLatch:允许一个或多个线程等待其他线程执行完毕之后再执行,可以用于线程之间的协调和通信。
  5. CyclicBarrier类:允许多个线程在一个栅栏处等待,直到所有线程都到达栅栏位置之后,才会继续执行。

二:Semaphore、CountDownLatch、CyclicBarrier区别?

它们都可以用来协调多个线程之间的执行。

  1. Semaphore是一个计数信号量,它允许多个线程同时访问共享资源,并通过计数器来控制访问数量。通常用来实现一个线程需要等待获取一个许可证才能访问共享资源,或者需要释放一个许可证才能完成操作的操作。
  2. CountDownLatch是一个计数器,通常用来实现一个线程等待其他多个线程完成操作之后再继续执行的操作。
  3. CyclicBarrier是一个同步屏障,通常用来实现多个线程在同一个屏障处等待,然后再一起继续执行的操作。

三:有三个线程T1,T2,T3如何保证顺序执行?

  1. 使用join:Thread类中提供了一个join方法,join就是把thread1这个子线程加入到当前主线程中,也就是主线程要阻塞在这里,等子线程执行完之后再继续执行。
    在这里插入图片描述

  2. Semaphore
    在这里插入图片描述
    在这里插入图片描述

  3. 使用CountDownLatch:主要就是想办法让编排三个子线程的主线程阻塞,保证T1执行完再启动T2,T2执行完再启动T3。而这个编排的方式就是想办法知道什么时候子线程执行完,就可以通过CountDownLatch实现。

在这里插入图片描述
在这里插入图片描述
4. 使用线程池:线程池内部是使用了队列来存储任务的,所以线程的执行顺序会按照任务的提交顺序执行的,但是如果是多个线程同时执行的话,是保证不了先后顺序的,因为可能先提交的后执行了。但是我们可以定义一个只有一个线程的线程池,然后依次的将T1,T2,T3提交给他执行:
在这里插入图片描述

四:三个线程分别顺序打印0-100

http://www.xdnf.cn/news/625447.html

相关文章:

  • LumaDot (亮度可调的屏幕圆点)
  • 分布式消息中间件基础
  • 网络协议与通信安全
  • Oracle 19c DG备库报错ORA-00313、ORA-00312、ORA-27037
  • 【Linux仓库】权限的量子纠缠:用户/组/other如何编织Linux访问控制网?
  • el-form 使用el-row el-col对齐 注意事项
  • 从碎片化到集成化:Profibus转Profinet网关引领设备管理数字化转型
  • 【TypeScript】知识点梳理(四)
  • 5月24日day35打卡
  • qiankun解决的问题
  • ABC406E 题解
  • python中Web框架Flask vs FastAPI 对比分析
  • 一个开源的 Blazor 跨平台入门级实战项目
  • 红黑树简单模拟实现
  • 随机森林(Random Forest)学习
  • ES的Refresh、Flush、Merge操作对性能的影响? ES如何实现近实时(NRT)搜索? ES聚合查询的Terms和Cardinality区别?
  • R基于多元线性回归模型实现汽车燃油效率预测及SHAP值解释项目实战
  • TDengine 高可用——双活方案
  • 爬虫实战之爬微博图片:xpath的具体运用
  • maven 3.0多线程编译提高编译速度
  • C++类型转换
  • Flink运行架构及并行度设置
  • 9.4在 VS Code 中配置 Maven
  • [C++]洛谷B3626 跳跃机器人(题干 + 详细讲解, BFS练习题)
  • 安卓11 不带谷歌包默认桌面布局
  • android studio 开启无线调试
  • JVM 的垃圾回收机制 GC
  • QT写槽函数的注意事项
  • 第1周 神经网络基石: 从零构建你的第一个模型
  • 深入理解设计模式之适配器模式