【架构师面试-JUC并发编程-1】-多线程基础

1:并行和并发有什么区别

 1:并发

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

2:并行

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

3:串行 

有n个任务,由一个线程按顺序执行。由于任务、方法都在一个线程执行所以不存在线程不安全情况,也就不存在临界区的问题。

4:总结

做一个形象的比喻

并发 = 两个队列和一台咖啡机。

并行 = 两个队列和两台咖啡机。

串行 = 一个队列和一台咖啡机。

2:线程和进程的区别

1:进程

进程是一个“执行中的程序”,是系统进行资源分配和调度的一个独立单位。

2:线程

线程是进程的一个实体,一个进程中一般拥有多个线程。线程之间共享地址空间和其它资源(所以通信和同步等操作,线程比进程更加容易)

3:区别

线程一般不拥有系统资源,但是也有一些必不可少的资源(使用ThreadLocal存储)

线程上下文的切换比进程上下文切换要快很多。

线程上下文切换比进程上下文切换快的原因,可以总结如下:

进程切换时,涉及到当前进程的CPU环境的保存和新被调度运行进程的CPU环境的设置线程切换时,仅需要保存和设置少量的寄存器内容,不涉及存储管理方面的操作。

3:并发编程有什么优点和缺点

1:优点

充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升方便进行业务拆分,提升系统并发能力和性能:在特殊的业务场景下,先天的就适合于并发编程。现在的系统动不动就要求百万级甚至千万级的并发量,而多线程并发编程正是开发高并发系统的基础,利用好多线程机制可以大大提高系统整体的并发能力以及性能。面对复杂业务模型,并行程序会比串行程序更适应业务需求,而并发编程更能吻合这种业务拆分 。

2:缺点

并发编程的目的就是为了能提高程序的执行效率,提高程序运行速度,但是并发编程并不总是能提高程序运行速度的,而且并发编程可能会遇到很多问题,比如:内存泄漏、上下文切换、线程安全、死锁等问题。

4:请描述线程状态及状态之间的转换?

同步的实现方法有五种,分别是synchronized、wait与notify、sleep、suspend、join

1:synchronized

一直持有锁,直至执行结束

2:wait

使一个线程处于等待状态,并且释放所持有的对象的锁,需捕获异常。

3:sleep

使一个正在运行的线程处于睡眠状态,是一个静态方法,需捕获异常,不释放锁。

sleep()方法是Thread类中方法,而wait()方法是Object类中的方法。

sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态,在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备。

4:notify

唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。

5:notityAll

唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

5:sleep和wait的区别?

1:类的不同

sleep() 是 Thread线程类的静态方法,wait() 是 Object类的方法。

2:是否释放锁

sleep() 不释放锁;wait() 释放锁。

3:用途不同

Wait 通常被用于线程间交互/通信,sleep 通常被用于暂停执行。

4:用法不同

wait() 方法被调用后,线程不会自动苏醒,需要别的线程调用同一个对象上的 notify() 或者 notifyAll() 方法。sleep() 方法执行完成后,线程会自动苏醒。或者可以使用wait(long timeout)超时后线程会自动苏醒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不要迷恋发哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值