
Java
文章平均质量分 59
Mr_Tony
这个作者很懒,什么都没留下…
展开
-
使用ListenableFuture进行异步任务执行并进行线程切换
在程序中会经常需要做一些异步任务,但是由于部分操作其实很简单,仅仅是短暂的进行异步操作,然后在结果成功或失败的时候切换回主线程进行下一步处理,这期间不能阻塞主线程。这里记录一下使用google的guava库里面的并发类进行处理,也可以,只是在Android上最低支持API23版本,但是项目最低支持21。使用来进行Java高版本兼容的话,改动比较多,一直有R8/D8兼容性错误。估计要升级jdk、gradle等等版本,在协作开发中不太合适。项目中本身就有guava。所以使用这个进行开发。原创 2023-11-23 11:15:57 · 1189 阅读 · 0 评论 -
一个依赖注入库,用于快速实现单例和set、get
javax-inject该项目貌似在Dragger中用到了https://github.com/javax-inject/javax-inject/tree/master/lib1、可以简化set、get的写法2、简化单例的写法参考链接:1、https://www.jianshu.com/p/e5c145c733cc2、https://docs.oracle.com/javaee/6...原创 2020-01-11 16:02:46 · 224 阅读 · 0 评论 -
搜集所有子线程结果给主线程然后再执行剩下逻辑的几种方式
标题太长了,有点类似于 fork/join 的思想,但是对Java不是很了解,所以不知道自己理解的对不对,然后标题就写成这样了。 场景描述: 以前一个朋友给我说,他要同时请求三个接口,然后三个接口数据都得到后,再整理到一个集合中去,然后显示出来。当时我说了一种思路,就是设置一个int i = 3的变量值,当每一个接口完成后,这个值就减一,另一个地方进行while循环,直到这个值为0,然后再整理数原创 2018-01-04 11:42:20 · 414 阅读 · 0 评论 -
多线程执行父类和子类中的同步方法的结论
结论:父类和子类中分别有一个同步方法(没有重写),然后开启两个线程分别执行其中一个同步方法,最终结果是串行。结论:父类和子类中的同步方法是同一个锁。测试代码如下:SynParent.javapublic class SynParent { public synchronized void synParent(){ try {原创 2017-05-05 16:57:41 · 1827 阅读 · 0 评论 -
Android5.0以下https兼容ssl3的问题
低版本兼容https的问题原创 2022-04-27 11:32:58 · 1658 阅读 · 0 评论 -
Java版九宫格算法
九宫格算法,该算法不同于其它方案,仅供参考,因为思路可能不是你想要的原创 2022-03-20 20:52:58 · 2259 阅读 · 0 评论 -
设计模式-代理模式
Retrofit中的代理模式原创 2022-02-28 21:47:37 · 424 阅读 · 0 评论 -
设计模式-责任链模式
关于对OkHttp中责任链模式的简写代码原创 2022-02-27 19:41:50 · 2157 阅读 · 0 评论 -
Java线程池
文章目录一、前言二、原理的简单介绍三、简单使用四、阻塞队列五、参考链接一、前言 Java线程池是处理高并发,优化使用效率的一个工具,这里对其进行一个简单的记录。二、原理的简单介绍 线程池一般由核心线程数、最大线程数、空闲时间、空闲时间单位、阻塞队列、拒绝策略组成。其执行过程为当添加一个线程后,若核心线程数不满时候,则创建一个核心线程进行运行,若核心线程池满了则加入阻塞队列,如果阻塞队列满了,这时候就会判断最大线程数是否已经达到最大,如果没有达到最大则创建新的线程,如果达到最大则执行拒绝策略。当最原创 2022-02-27 18:50:28 · 444 阅读 · 0 评论 -
MAC 下面卸载JDK
在MAC卸载JDK遵从以下流程进行1、切换到根目录cd / 2、进入Library目录,(我的JDK没有装在User目录下面,所以需要进入根目录,如果根目录没有的话可以去用户目录下吗找)cd Library3、进入Java目录cd Java4、进入JavaVirtualMachines目录倘若安装了多个jdk,那么jdk都在这个目录下吗,如果只装了一个,可以把这个目录删掉。我装了两个,所以使用以下方式删掉cd JavaVirtualMachinessudo rm -fr zulu-原创 2021-11-22 18:00:40 · 17049 阅读 · 0 评论 -
Kotlin的文档注释
一、前言在编写程序时候,有时候需要编写注释,对于一个代码的说明有时候会需要对其它代码进行关联。使点击关键词即可查看相关代码。不过文档注释功能不属于Android提供,属于由各自的语言提供,java文档注释和kotlin文档注释不同二、@link 和[]在java文档中 使用@link 可以链接到相应的代码在kotlin里面需要使用 []如下 /** * 添加基础聊天布局 * 如果直接重写该函数,而不重写[View] 函数时候,则不会添加到父布局 * @param原创 2021-09-09 15:51:48 · 4663 阅读 · 0 评论 -
Android中同步异步任务
文章目录一、前言二、代码演示一、前言 在实际开发中会出现这种场景,有多个接口请求数据,需要等到这几个接口都请求完后再执行后面的任务。大部分情况下接口网络操作都封装完成,只有一共回调可供操作,这里使用CountDownLatch、CyclicBarrier来进行处理。二、代码演示 这里使用点击事件简化演示程序。代码如下(解开注释可以看到同样的结果):package com.example.helloworldimport androidx.appcompat.app.AppCompatAct原创 2021-08-23 13:46:17 · 834 阅读 · 0 评论 -
Java获取月份天数错误
之前编写获取日期函数如下: /** * 获取某年某月有多少天 * @return 该月的天数 */ public static int getDaysAboutMonth(int year,int month){ Calendar c = Calendar.getInstance(); c.set(Calendar.YE...原创 2020-03-03 09:17:17 · 850 阅读 · 0 评论 -
kotlin 多接口回调的实现方式(二)
上一篇是纯kotlin实现,这一篇是基于现有Java接口做的kotlin拓展,最早是在stackoverflow上看的(现在忘了地址是哪个)。只是当时没看懂,当完成上一篇后,再看这一篇时候忽然就明白了作者的意思,这里做个记录。 代码可以直接运行,可以先运行下看下例子:interface Callbacks { fun onCurrentLocation(location: Stri...原创 2018-09-17 10:11:20 · 2520 阅读 · 0 评论 -
关于MessageFormat.format()的注意事项
以下仅是我自己的看法关于MessageFormat的详细解释可以查看源码String.formt()主要可以用于格式化字符串以及占位MessageFormat.format()主要用于占位,是个字符模板关于两者的区别没有仔细研究,个人感觉MessageFormat是一个专门的字符模板。首先:MessageFormat类只有一个静态方法MessageFormat.format(S原创 2015-12-04 15:55:49 · 5028 阅读 · 0 评论