摘要:
协程(Coroutine):是单线程下的并发,又称微线程,纤程。简单理解就是线程中的线程。 优点: 轻量,创建成本小,降低了内存消耗 用户态调度,减少了 CPU 上下文切换的开销,提高了 CPU 缓存命中率 减少同步加锁,提高了性能 可以用同步思维写异步代码 轻量,创建成本小,降低了内存消耗 用户态 阅读全文
摘要:
除了使用 synchronized、Lock 加锁之外,Java 中还有很多不需要加锁就可以解决并发问题的工具类 1、原子工具类 JDK 1.8 中,java.util.concurrent.atomic 包下类都是原子类,原子类都是基于 sun.misc.Unsafe 实现的。 CPU 为了解决并 阅读全文
摘要:
活锁 任务没有被阻塞,由于某些条件没有满足,导致一直重复尝试—失败—尝试—失败的过程。 处于活锁的实体是在不断的改变状态,活锁有可能自行解开。 死锁是大家都拿不到资源都占用着对方的资源,而活锁是拿到资源却又相互释放不执行。 解决活锁的一个简单办法就是在下一次尝试获取资源之前,随机休眠一小段时间。 看 阅读全文
摘要:
并发程序一旦死锁,往往我们只能重启应用。解决死锁问题最好的办法就是避免死锁。 死锁发生的条件 互斥,共享资源只能被一个线程占用 占有且等待,线程 t1 已经取得共享资源 s1,尝试获取共享资源 s2 的时候,不释放共享资源 s1 不可抢占,其他线程不能强行抢占线程 t1 占有的资源 s1 循环等待, 阅读全文