Java
文章平均质量分 77
墨一迟温
思考让我们更清醒。
展开
-
nio学习
Nio原创 2022-05-17 10:58:05 · 143 阅读 · 0 评论 -
Rxjava线程切换源码分析
首先我提出来两个问题: 1.Rxjava是如何做到线程切换的 2.线程切换我多次调用subscribeOn和多次调用observeOn,对数据流由什么影响 对Rxjava的数据处理流程不是很清楚的,可以看我上一篇文章 数据处理及订阅流程分析 下面这段代码相信很多人都写过 upstream.subscribeOn(SchedulerProvider.net()) .observeOn(AndroidSchedulers.mainThread()); 上游的Observable进行线原创 2020-10-14 19:14:03 · 425 阅读 · 3 评论 -
Rxjava数据处理到订阅流程分析
分析一个Observable从创建到map到被订阅的流程,以此来明白Rxjava,是如何封住数据 如何变换数据的,从而对Rxjava有个宏观的数据改变方式的认识。以下是我们要分析的代码流程 Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subscribe(ObservableEmitter<Integer> e原创 2020-10-14 16:55:20 · 248 阅读 · 0 评论 -
CAS记录
首先介绍一下什么是CAS,CAS是乐观锁的一种,用于JAVA并发编程。CAS解读为compareAndSet,比较并设值。例如有一个AtomicBoolean a; public final boolean compareAndSet(boolean expect, boolean update) a.compareAndSet(boolean expect,boolean update) expect指得是期望值,update表示要更新为的值,当且仅当expect与此刻变量a的值是一样的时候才去原创 2020-10-13 16:38:57 · 116 阅读 · 0 评论 -
Rxjava 源码分析Zip与combinelatest区别
实验 public static void main(String[] args) { testZip(); testComb(); } public static void testZip() { Observable<Integer> obs1 = Observable.just(1, 2, 3, 4, 5, 6, 7); Observable<Integer> obs2 = Observable原创 2020-08-31 19:40:50 · 527 阅读 · 0 评论 -
动态代理(一)
代理是基本的设计模式之一,说一说它的一个定义:她是你为了提供额外的不同操作,而插入的用来代替“实际”对象的的对象。 首先面向接口编程是我们代理的开始,接口一般我们用来做方法回调,和搭架子用。 public interface Interface { void doSomthing(); void doSomethingElse(Object proxied);} 再写一个实原创 2017-10-09 21:59:11 · 411 阅读 · 0 评论 -
为什么方法内部的私有变量不存在线程安全问题
大家都知道,非线程安全问题存在于“实例变量”中,方法内部的私有变量,则不存在线程安全问题,这是为什么呢? 因为Java运行时数据区,虚拟机栈或者本地方法栈(执行方法所在的内存区域)是线程私有的,每个线程都有自己的虚拟机栈存储区和本地方法栈,所以线程在执行方法时,方法内部的变量不会牵扯到共享这一原则。只有共享内存才会牵扯到非线程安全问题,实例变量内存,在堆...原创 2018-07-10 11:06:57 · 2863 阅读 · 0 评论 -
静态代码块、构造代码块、构造函数以及Java类初始化顺序
静态代码块:用staitc声明,jvm加载类时执行,仅执行一次 构造代码块:类中直接用{}定义,每一次创建对象时执行。 执行顺序优先级:静态块,main(),构造块,构造方法。 构造函数 关于构造函数,以下几点要注意: 1.对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的。 2.构造函数的作用是用于给对象进行初始化。 3.一个对象建立,构造函数只运行一次,而一...原创 2019-05-30 11:33:17 · 150 阅读 · 0 评论