"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页未读,继续阅读
- 粉丝: 2050
- 资源: 4203
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助