随笔分类 - 多线程
摘要:说到redis就不得不提到jedis和redisson,这两个对于redis的操作各有优劣,具体的分析可以百度搜索,本文通过redisson来实现分布式锁。 1、引入依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisso
阅读全文
摘要:1、Runable和Callable Java里面实现多线程的三种方式:一、是继承Thread类;二、实现Runable接口;三、实现Callable接口。 第一种方式继承Thread,然后重写run(); 第二种方式实现Runable接口,然后实现run(); public interface R
阅读全文
摘要:说到多线程肯定要理解锁,锁可以分为悲观锁和乐观锁,比如独占锁就是悲观锁,synchronized就是一种独占锁。 何为悲观,认为每一次操作数据,都可能会发生冲突,所以采用的策略是,先锁定再访问,保证在加锁阶段只有自己可以操作数据。何为乐观,就是我认为大多数情况下,操作的数据不会发生冲突,所以不会加锁
阅读全文
摘要:锁的状态分为4种,无锁、偏向锁、轻量级锁、重量级锁其实涉及到锁的升级,随着线程竞争的加大,从偏向锁->轻量级锁->重量级锁,且升级过程不可逆 问:为什么会有锁升级?直接就上重量级锁不好吗?答:因为重量级锁性能不好。 问:为什么重量级锁性能不好?答:因为加锁和解锁过程,涉及到CPU用户态切换到内核态再
阅读全文