摘要:
1、Runable和Callable Java里面实现多线程的三种方式:一、是继承Thread类;二、实现Runable接口;三、实现Callable接口。 第一种方式继承Thread,然后重写run(); 第二种方式实现Runable接口,然后实现run(); public interface R 阅读全文
posted @ 2022-03-25 16:43
浪迹天涯的派大星
阅读(126)
评论(0)
推荐(0)
摘要:
ThreadLocal是什么呢?简单来说,它是一个线程内部的存储类。 类组成:1、无参构造方法2、一个ThreadLocalMap静态内部类3、ThreadLocalMap静态内部类里面存在一个Entry<ThreadLocal<?> k, Object v>[]数组4、其他的就不细说,可以自己看源 阅读全文
posted @ 2022-03-25 15:50
浪迹天涯的派大星
阅读(80)
评论(0)
推荐(0)
摘要:
说到多线程肯定要理解锁,锁可以分为悲观锁和乐观锁,比如独占锁就是悲观锁,synchronized就是一种独占锁。 何为悲观,认为每一次操作数据,都可能会发生冲突,所以采用的策略是,先锁定再访问,保证在加锁阶段只有自己可以操作数据。何为乐观,就是我认为大多数情况下,操作的数据不会发生冲突,所以不会加锁 阅读全文
posted @ 2022-03-25 15:35
浪迹天涯的派大星
阅读(95)
评论(0)
推荐(0)
摘要:
锁的状态分为4种,无锁、偏向锁、轻量级锁、重量级锁其实涉及到锁的升级,随着线程竞争的加大,从偏向锁->轻量级锁->重量级锁,且升级过程不可逆 问:为什么会有锁升级?直接就上重量级锁不好吗?答:因为重量级锁性能不好。 问:为什么重量级锁性能不好?答:因为加锁和解锁过程,涉及到CPU用户态切换到内核态再 阅读全文
posted @ 2022-03-25 15:30
浪迹天涯的派大星
阅读(135)
评论(0)
推荐(0)
摘要:
Kafka是一个高性能的分布式发布订阅消息系统,其实activeMq,RabbitMq,kafka都比较类似。 其解决的问题:解耦、异步、削峰,以及对应的场景小知识:mysql每秒处理2000个请求已经差不多了activeMq,rabbitMq,rocketMq,kafka优缺点比较,从单机吞吐量、 阅读全文
posted @ 2022-03-25 15:22
浪迹天涯的派大星
阅读(263)
评论(2)
推荐(1)

浙公网安备 33010602011771号