- 博客(6)
- 收藏
- 关注
原创 2021-04-24
freeswitch是做什么的主要工作是一个以freeswitch为基础,在通过sip电话软件的连接(如: linphone、X-lite),实现视音频的实时通讯。特点:是跨平台、可伸缩、开源的
2021-04-24 20:16:46
89
原创 并发-两种线程池
ThreadPoolExcutor 和 ForkJoinPool一. 两者的区别: ThreadPoolExcutor 是多个线程共享一个队列。 ForkJoinPool 是分解处理,在汇总结果。每个线程对应一个队列,任务少的线程会去任务重的队列获取任务执行。 二. 线程池的7个参数: 1.coolPoolSize: 核心线程数 2.maxPoolSize: 最大线程池数 3.keepAliveTime: 非核心线程不
2020-11-03 00:00:55
151
原创 并发-ThreadLocal、强、软、弱、虚
ThreadLocalThreadLocal 从名字上看,叫线程变量。可以理解为每个线程独有的变量。 1. 看源码我们就会知道,ThreadLocal核心是ThreadLocalMap 容器。 2. 这个容器在set值时是以当前的ThreadLocal为key的,线程之间 的信息都是独享的,保证了线程安全问题。 3. 最重要的一点是Map的这个key被传递给了弱引用。 4. 这里说下弱引用:只要是触发了GC弱引用就会被回收 5. 由于3、4两条,当ThreadLocal 引用 == nul
2020-10-27 23:59:39
172
原创 并发-AQS
今天聊下我理解的AQS主要从是什么、数据结构、原理三个点说一下一. 是什么 AQS是JUC.Locks包下的一个抽象类 AbstractQueueSynchronizer 使用的设计模式是TemplateMethod 模板方法又叫钩子函数 (AQS设计方法,具体的实现由子类来实现)二. 数据结构 AQS 是 volitile int state + Queue (是个双向链表) 1. state 的具体含义由它的子类来决定 例如:
2020-10-26 23:54:27
167
原创 JVM-类加载(总结一)
了解类加载一. 首先要知道四种类加载器 1. bootstrap : 加载lib/rt.jar charset.jar 等核心类 ,c++实现 2. Extension: 加载扩展jar包 jre/lib/ext*.jar或者Djava.ext.dirs指定 3. App: 加载的是classpath指定的内容 4. custom ClassLoader: 自定义类加载二. 四种加载器的关系 1. custom ClassLoader 的父亲加载器 App 2. App 的父加载器
2020-10-25 17:47:25
148
原创 并发-JUC基础知识总结(一)
JUC的几个类AtomicInteger确保原子性的原理底层 使用unsafe 类实现unsafe 直接操作的是地址值,cup的原语支持,确保了原子性。unsafe运用的是CAS思想compareAndSet(Object var1 , long valueOffset 地址值,int b 更新值){ int var5; do{ //通过地址值获取最新的值 var5 = this.getIntVolatile(var1, valueOffset ) }while(!thi
2020-10-24 23:06:25
2491
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人