Java并发编程最全面试题 123道.pdf

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

基础知识再

1.为什么要使用并发编程代

提升多核CPU的利用率:一般来说一台主机上的会有多个CPU核心,我们可以创建多个线程,理论

上讲操作系统可以将多个线程分配给不同的CPU去执行,每个CPU执行一个线程,这样就提高了

CPU的使用效率,如果使用单线程就只能有一个CPU核心被使用。

比如当我们在网上购物时,为了提升响应速度,需要拆分,减库存,生成订单等等这些操作,就可

以进行拆分利用多线程的技术完成。面对复杂业务模型,并行程序会比串行程序更适应业务需求,

而并发编程更能吻合这种业务拆分。

简单来说就是:众

充分利用多核CPU的计算能力;

方便进行业务拆分,提升应用性能

2.多线程应用场景

例如:迅雷多线程下载、数据库连接池、分批发送短信等。

3.并发编程有什么缺点

并发编程的目的就是为了能提高程序的执行效率,提高程序运行速度,但是并发编程并不总是能提

高程序运行速度的,而且并发编程可能会遇到很多问题,比如:内存泄漏、上下文切换、线程安

全、死锁等问题。

4.并发编程三个必要因素是什么?

原子性:原子,即一个不可再被分割的颗粒。原子性指的是一个或多个操作要么全部执行成功要么

全部执行失败。

可见性:一个线程对共享变量的修改,另一个线程能够立刻看到。(synchronized,volatile)

有序性:程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序)

5.Java程序中怎么保证多线程的运行安全?

出现线程安全问题的原因一般都是三个原因:

线程切换带来的原子性问题解决办法:使用多线程之间同步synchronized或使用锁(lock)。

缓存导致的可见性问题解决办法:synchronized、volatile、LOCK,可以解决可见性问题

编译优化带来的有序性问题解决办法:Happens-Before规则可以解决有序性问题

6.并行和并发有什么区别?

并发:多个任务在同一个CPU核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是

同时执行。

并行:单位时间内,多个处理器或多核处理器同时处理多个任务,是真正意义上的“同时进行”。

串行:有n个任务,由一个线程按顺序执行。由于任务、方法都在一个线程执行所以不存在线程不

安全情况,也就不存在临界区的问题。上

文档评论(0)

707360051 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档