首页IT科技高并发面试题(并发篇-面试题解析)

高并发面试题(并发篇-面试题解析)

时间2025-06-16 13:14:28分类IT科技浏览4838
导读:1.sleep和wait 1.1 共同点...

1.sleep和wait

  1.1 共同点

wait(),wait(long),sleep(long) 的效果都是让当前线程暂时放弃CPU的使用权            ,进入阻塞状态

  1.2  不同点

方法归属不同: sleep(long)是Thread类的静态方法;wait()和wait(long)都是Object类的成员方法 苏醒的机制不同:sleep(long)只能等待时间结束后苏醒;wait(),必须被notify()或notifyAll()唤醒                      ,否则一直等待;wait(long)可以等待时间就结束后苏醒      ,也可以通过notify()或notifyAll()唤醒 锁特性不同:sleep在synchronized代码块中执行         ,并不会释放对象锁;wait方法调用必须先获取wait对象的锁                      ,执行后会释放对象锁          ,允许其他线程获取对象锁

2.lock和synchronuzed 

   2.1  语法层次

synchronized是关键字; lock是接口      ,创建其对象的时候需要通过其实现类创建 使用synchronized时                     ,退出同步代码块锁会自动释放              ,而lock需要调用unlock方法释放锁

   2.2  功能层次

二者都是悲观锁   ,都具备基本的互斥                    ,同步                  ,锁重入功能 lock具备等待状态,公平锁                ,可打断                      ,可超时等功能

3. 保证线程安全的三个方面

可见性:一个线程对共享变量修改   ,另外一个线程可以看到最新的结果 有序性:一个线程内代码按编码顺序执行 原子性: 一个线程内多行代码以一个整体运行            ,期间不能有其他线程的代码插队

4.volatile能否保证线程安全

volatile可以保证共享变量的可见性与有序性                      ,但是不能保证原子性       ,所以无法保证线程安全

5.Volatile与Synchronized比较

Volatile是轻量级的synchronized         ,因为它不会引起上下文的切换和调度                      ,所以Volatile性能更好            。 Volatile只能修饰变量          ,synchronized可以修饰方法      ,静态方法                     ,代码块                      。 Volatile对任意单个变量的读/写具有原子性              ,但是类似于i++这种复合操作不具有原子性      。而锁的互斥执行的特性可以确保对整个临界区代码执行具有原子性         。 多线程访问volatile不会发生阻塞   ,而synchronized会发生阻塞                      。 volatile是变量在多线程之间的可见性                    ,synchronize是多线程之间访问资源的同步性          。

6.悲观锁和乐观锁

  6.1 悲观锁

 悲观锁的代表是synchronized和lock锁 核心思想:线程只有占用了锁                  ,才能去操作共享变量,每次只有一个线程占锁成功                ,获取失败的锁                      ,都得停下来等待 线程从运行到阻塞   ,再从阻塞到唤醒            ,涉及到线程上下文切换                      ,耗费性能

   6.2  乐观锁

代表是:AtomicInteger 核心思想:无需加锁      ,每次只有一个线程能成功修改共享变量         ,其他失败的线程不需要停止                      ,不断重复尝试 由于线程一直运行          ,不涉及到线程上下文切换      ,无性能耗费

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
七喜电脑怎样设置usb启动(七喜hedy笔记本电脑开机进入BIOS的方法(F8)) win7无法启动wired autoconfig(解决Win7无法启动"WLAN AutoConfig"服务的问题)