Java八股--多线程篇

1. 进程和线程的区别,进程间如何通信

进程:系统运行的基本单位,进程在运行过

程中都是相互独立,但是线程之间运行可以

相互影响

线程:独立运行的最小单位,一个进程包含

多个线程且它们共享同一进程内的系统资源

进程间通过管道、 共享内存、信号量机制、

消息队列通信

2. 什么是线程上下文切换

当一个线程被剥夺 cpu 使用权时,切换到另

外一个线程执行

3. 什么是死锁

死锁指多个线程在执行过程中,因争夺资源

造成的一种相互等待的僵局

 4. 死锁的必要条件

互斥条件:同一资源同时只能由一个线

    程读取

不可抢占条件:不能强行剥夺线程占有

    的资源

请求和保持条件:请求其他资源的同时

    对自己手中的资源保持不放

循环等待条件:在相互等待资源的过程

    中,形成一个闭环

想要预防死锁,只需要破坏其中一个条件即可,

比如使用定时锁、尽量让线程用相同的加锁顺

序,还可以用银行家算法可以预防死锁 

5. Synchrpnized 和 lock 的区别

synchronized关键字lock 是一个

② synchronized 在发生异常时会自动释放

    锁,lock 需要手动释放锁

③ synchronized 是可重入锁、非公平锁、

    不可中断锁,lock 的 ReentrantLock 是

    可重入锁,可中断锁,可以是公平锁也

    可以是非公平锁

④ synchronized 是 JVM 层次通过监视器

    实现的,Lock 是通过 AQS 实现的

6. 什么是 AQS 锁?

AQS 是一个抽象类,可以用来构造锁和同

步类,如 ReentrantLock,Semaphore,

CountDownLatch,CyclicBarrier

AQS 的原理是,AQS 内部有三个核心组件:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值