首页 > 试题广场 >

在使用锁保证线程安全时,可能会出现活跃度失败的情况,活跃度失

[单选题]
在使用锁保证线程安全时,可能会出现活跃度失败的情况,活跃度失败主要包括
  • 死锁
  • 饥饿
  • 活锁
  • 以上全部

在使用锁保证现场安全时可能会出现 活跃度 失败的情况主要包括 饥饿、丢失信号、和活锁、死锁 等。【多线程除了死锁之外遇到最多的就是活跃度问题了】

饥饿 :指线程需要访问的资源 被永久拒绝 ,以至于不能再继续进行。解决饥饿问题需要平衡线程对资源的竞争,如线程的优先级、任务的权重、执行的周期等。

活锁 :指线程虽然没有被阻塞,但由于某种条件不满足,一直尝试重试却始终失败。解决活锁问题需要对 重试机制 引入一些随机性。例如如果检测到冲突,那么就暂停随机的一定时间进行重试,这会大大减少碰撞的可能性。

发表于 2016-04-09 21:52:05 回复(0)
我认为,活跃度失败意思就是调用不到了线程了,那么三种都有可能;
死锁也就是互相等着对方释放资源,结果谁也得不到;活锁可能发生让某一个线程一直处于等待状态,其他线程都可以调用到;饥饿我就感觉用抢占式说好说,每次来就执行优先级高的,那么优先级低的可能永远执行不到。
发表于 2016-03-28 00:08:51 回复(0)
72%头像 72%
活跃度问题有关死锁、饥饿和活锁:
1. 死锁是由于资源紧张造成的,多个线程由于请求资源而形成一个环路,谁也不退让,导致谁也不能执行;
2. 饥饿主要是由于线程优先级造成的,当大量线程并发执行时,优先级较小的线程总是得不到执行,引起线程饥饿;
3. 活锁是由于线程在资源请求中遇到冲突时的重试策略不正确造成的。引入一定的随机性可避免活锁。
发表于 2019-12-13 16:55:43 回复(0)
《Java Concurrency In Practice》说了导致活跃度的问题:死锁、饥饿、活跃度
发表于 2016-07-13 13:57:39 回复(0)
活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。
发表于 2018-10-31 21:39:04 回复(0)
活跃度问题有关死锁、饥饿和活锁:
1. 死锁是由于资源紧张造成的,多个线程由于请求资源而形成一个环路,谁也不退让,导致谁也不能执行;
2. 饥饿主要是由于线程优先级造成的,当大量线程并发执行时,优先级较小的线程总是得不到执行,引起线程饥饿;
3. 活锁是由于线程在资源请求中遇到冲突时的重试策略不正确造成的。引入一定的随机性可避免活锁。
发表于 2020-10-10 23:41:19 回复(0)
活跃度失败的定义是什么?查了一下没找着
发表于 2018-11-07 16:44:02 回复(0)
死锁、饥饿、活锁。所谓活跃度问题是指线程或进程长时间得不到cpu占用。《Java并发编程实战》中提到,无论执行计算密集操作还是执行某个可能阻塞的操作,如果持有锁的时间过长,都会带来活跃性或性能问题。
发表于 2017-07-19 15:08:12 回复(0)
        进程饥饿,即为Starvation,指当等待时间给进程推进和响应带来明显影响称为进程饥饿。当饥饿到一定程度的进程在等待到即使完成也无实际意义的时候称为饥饿死亡。
        活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。
发表于 2016-09-18 12:11:58 回复(0)
死锁、饥饿、活锁都是
发表于 2016-08-13 16:11:21 回复(0)