线程面试题目(Thread ) 面试题目

1. 什么是线程?

1 、线程是操作系统能够进⾏运算调度的最⼩单位,它被包含在进程之中,是进程中的实际运作单位,可以使⽤多线程对
进⾏运算提速。
⽐如,如果⼀个线程完成⼀个任务要100毫秒,那么⽤⼗个线程完成改任务只需10毫秒

2. 什么是线程安全和线程不安全?

1、线程安全

线程安全 : 就是多线程访问时,采⽤了加锁机制,当⼀个线程访问该类的某个数据时,进⾏保护,其他线程不能进⾏
访问,直到该线程读取完,其他线程才可使⽤。不会出现数据不⼀致或者数据污染。
Vector 是⽤同步⽅法来实现线程安全的, ⽽和它相似的 ArrayList 不是线程安全的。

2、线程不安全

线程不安全:就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据
线程安全问题都是由全局变量及静态变量引起的。
若每个线程中对全局变量、静态变量只有读操作,⽽⽆写操作,⼀般来说,这个全局变量是线程安全的;若有多个
线程同时执⾏写操作,⼀般都需要考虑线程同步,否则的话就可能影响线程安全。

3. 什么是⾃旋锁?

⾃旋锁是 SMP 架构中的⼀种 low-level 的同步机制。
1 、当线程 A 想要获取⼀把⾃旋锁⽽该锁⼜被其它线程锁持有时,线程 A 会在⼀个循环中⾃旋以检测锁是不是已经可⽤了。
2 、⾃选锁需要注意:
由于⾃旋时不释放 CPU ,因⽽持有⾃旋锁的线程应该尽快释放⾃旋锁,否则等待该⾃旋锁的线程会⼀直在那⾥⾃
旋,这就会浪费 CPU 时间。
持有⾃旋锁的线程在 sleep 之前应该释放⾃旋锁以便其它线程可以获得⾃旋锁。
3 、⽬前的 JVM 实现⾃旋会消耗 CPU ,如果⻓时间不调⽤ doNotify ⽅法, doWait ⽅法会⼀直⾃旋, CPU 会消耗太⼤
4 ⾃旋锁⽐较适⽤于锁使⽤者保持锁时间⽐较短的情况,这种情况⾃旋锁的效率⽐较⾼。
5 ⾃旋锁是⼀种对多处理器相当有效的机制,⽽在单处理器 ⾮抢占式 的系统中基本上没有作⽤

4. 什么是CAS

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值