"Java多线程面试题及答案" 本文总结了40个Java多线程面试题及答案,涵盖了多线程的基础知识、创建线程的方式、start()方法和run()方法的区别、Runnable接口和Callable接口的区别、CyclicBarrier和CountDownLatch的区别、volatile关键字的作用等多个方面。 多线程的基础知识 多线程有什么用?多线程可以发挥多核CPU的优势,防止阻塞,和便于建模。多核CPU上的多线程可以真正发挥出多核CPU的优势,达到充分利用CPU的目的。单核CPU上的多线程只是假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,看着像多个线程"同时"运行罢了。 创建线程的方式 创建线程有两种方式:继承Thread类和实现Runnable接口。实现Runnable接口的方式比继承类的方式更灵活,也能减少程序之间的耦合度,面向接口编程也是设计模式6大原则的核心。 start()方法和run()方法的区别 start()方法和run()方法的区别在于,start()方法可以表现出多线程的特性,而run()方法只是同步执行的。只有调用了start()方法,才会表现出多线程的特性,不同线程的run()方法里的代码交替执行。 Runnable接口和Callable接口的区别 Runnable接口中的run()方法的返回值是void,它做的事情只是纯粹地去执行run()方法中的代码而已;Callable接口中的call()方法是有返回值的,是一个泛型,和Future、FutureTask配合可以用来获取异步执行的结果。 CyclicBarrier和CountDownLatch的区别 CyclicBarrier和CountDownLatch都是java.util.concurrent下面的类,都可以用来表示代码运行到某个点上,但是它们有三个区别:1)CyclicBarrier的某个线程运行到某个点上之后,该线程即停止运行,直到所有的线程都到达了这个点,所有线程才重新运行;CountDownLatch则不是,某线程运行到某个点上之后,只是给某个数值-1而已,该线程继续运行。2)CyclicBarrier只能唤起一个任务,CountDownLatch可以唤起多个任务。3)CyclicBarrier可重用,CountDownLatch不可重用,计数值为0该CountDownLatch就不可再用了。 volatile关键字的作用 volatile关键字的作用是一个非常重要的问题,是每个学习、应用多线程的Java程序员都必须掌握的。volatile关键字的作用是确保变量的可见性和禁止指令重排序。
剩余9页未读,继续阅读
- 粉丝: 2085
- 资源: 4286
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 绿色建筑基本情况表.docx
- 矛盾纠纷大排查大化解切实专项行动分类台账.docx
- 民办培训机构设立核准表.doc
- 母婴保健技术服务人员考核审批表.doc
- 母婴保健技术服务执业许可申请表.doc
- 年度考核登记表.doc
- 年度项目绩效自评表(劳务派遣人员经费).docx
- 企业就业高校毕业生实行养老保险过渡费率试点申报表.docx
- 全市重点工作攻坚行动工作台账(1-12月份).docx
- 送达地址确认书(执行).doc
- EtherCAT总线通信学习资料,一手资料 提供基于stm32 mcuAX58100 ESC实现从站的具体方案,有完整的工程文件,提供源码以及工程配置、程序修改的视频,工程在开发板上已测 提供不同
- 基于springboot+vue框架的企业人事管理系统源码(java毕业设计完整源码).zip
- 机械设计芯片读取及激光打码机(sw18可编辑+2D+BOM+电气图+程序)全套设计资料100%好用.zip
- 基于SpringBoot+Vue的志愿者招募管理系统源码(java毕业设计完整源码).zip
- 基于算例IEEE33还有PG69,使用CPLEX+YALMIP进行二阶锥松弛建模的多时间断面潮流,有配电网重构,最优潮流,以及复现文章,模型,注释清晰,保证可运行
- 基于SpringBoot+Vue的校园篮球联赛管理系统源码(java毕业设计完整源码).zip