活跃性专题

3.10、活跃性、死锁、哲学家就餐、活锁、饥饿

死锁 有这样的情况:一个线程需要同时获得多把锁,这时就容易发生死锁 t1线程获得A对象锁,接下来想获取B对象的锁,t2线程获得B对象锁,接下来想要获取A对象锁 例: Object A = new Object();Object B = new Object();new Thread(() -> {synchronized (A) {log.debug("lock A");try {Thr

nontamic线程活跃性/利用率更高

nontamic 与atomic 区别 atomic 修饰的对象会保证setter和getter方法的完整性,任何线程访问题都可以得到一个完整的的初始化后的对象。因为要保证完整性,所以比较耗时。相对于nonatomic较为安全。(非绝对安全,多线程资源抢夺也会得到不一样的值, 也得使用@synchronized) nontamic 修饰的对象不会保证setter和getter方法的完整性,任何线

活跃性(死锁、饥饿、活锁)

锁顺序死锁 我们知道,加锁是为了保证线程安全性而做的同步操作,而过度的加锁可能导致各个线程彼此依赖别的线程已经持有的锁。先上一段代码瞅瞅: public class DeadLockDemo {    public static void main(String[] args) {        Object lock1 = new Object();        Object lock2

07 _ 安全性、活跃性以及性能问题

通过前面六篇文章,我们开启了一个简单的并发旅程,相信现在你对并发编程需要注意的问题已经有了更深入的理解,这是一个很大的进步,正所谓只有发现问题,才能解决问题。但是前面六篇文章的知识点可能还是有点分散,所以是时候将其总结一下了。 并发编程中我们需要注意的问题有很多,很庆幸前人已经帮我们总结过了,主要有三个方面,分别是:安全性问题、活跃性问题和性能问题。下面我就来一一介绍这些问题。 安全性问题