JAVA面试题合集四(并发编程)

本文探讨了并发编程的重要性和优势,如利用多核CPU提升性能,但也指出其潜在的内存泄漏、上下文切换和线程安全问题。介绍了并发编程的三要素:原子性、可见性和有序性,并对比了并发、并行和串行的区别。同时,讨论了多线程的优劣及线程与进程的区别,包括上下文切换的概念。最后,提到了守护线程和用户线程的区别以及如何在不同操作系统上查找线程CPU利用率的方法。
摘要由CSDN通过智能技术生成

1.为什么要使用并发编程?并发编程的优点是什么?
充分利用多核CPU的计算能力,业余拆分,挺高并发能力和性能
2.并发编程的缺点是什么?
内存泄漏.上下文溢出,线程安全,死锁问题
3.并发编程的三要素?线程安全的问题体现在?
原子性:一个或多个操作,要么全部执行成功,.要么执行失败
可见性:一个线程对共享变量的修改,对其他线程可见
有序性 程序执行的顺序按照代码的先后顺序执行. 处理器可能会对指令进行重排序
在这里插入图片描述
4.并发,并行,串行有什么区别?
并发: 多个任务在同一个CPU核上.时间片轮流交替执行,逻辑上看是同时执行的
并行 单位时间内.多个处理器或多核处理器同时处理多个任务,“同时执行”
串行 N个任务.一个线程执行.

5.什么是多线程?多线程的优劣?
多线程是指:程序中可能包含多个执行流,即在一个程序中,可以同时运行多个不同线程执行任务.
优;可以提高 CPU 的利用率,一个线程必须等待的时候,CPU 可以运行其它的线程而不是等待,
允许单个程序创建多个并行执行的线程来完成各自的任务。

劣:线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;
多线程需要协调和管理,所以需要 CPU 时间跟踪线程;
线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题。

6.线程和进程的区别?
线程:进程中一个执行任务(控制单元),负责当前进程中程序的执行,一个进程中至少一个线程,可以运行多个线程,多个线程共享数据
线程是轻量级进程,同一类线程共享代码和数据空间,每个线程都有自己的独立栈和程序计数器PC,线程切换开销大

进程:一个在内存中运行的应用程序,每个进程都有自己的一个内存空间,一个进程可以有多个线程,比如windos.exe就是一个进程
每个进程都有自己的独立代码和数据空间(程序上下文),进程切换资源消耗大

进程是操作系统资源分配的基本单位.线程是处理器任务调用和执行的基本单位
资源开销
包含关系
内存分配 同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的
影响关系 一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
执行过程:进程可以独立执行,有程序运行的入口,顺序执行序列,和程序出口…线程必须依存在应用程序中,又应用程序提供多个线程执行控制
7.什么是上下文切换?
多线程的一般线程个数大于CPU的核心个数,一个CPU在任意时间只能有一个线程使用,CPU采用为每个线程分配时间片
当一个线程的时间片用完的时候就会重新处于就绪状态让给其他线程使用,这个过程就属于一次上下文切换。

任务从保存到再加载的过程就是一次上下文切换。
Linux上下文切换和模式的切换的时间消耗非常少
8. 守护线程和用户线程有什么区别?
9.如何在windows和linux查找哪个线程的CPU利用率最高?
10.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值