Java
文章平均质量分 56
JoshuaXin
这个作者很懒,什么都没留下…
展开
-
Java的异步浅析(待续)
个人理解的计算机软件性能发展的三个方向,彼此交叉切不排斥1.分布式,通过集群来解决成本、性能和吞吐量等问题,常见的分布式问题包括CAP、选举、Zookeeper等问题;2.多线程,通过多线程来提高程序的并发度,对于IO操作频繁和多核的场景下很适宜,可以一定程度上提高软件的性能,但是对于共享变量的多线程同步容易出错,且处理不当对效率影响略大;3.异步,是为了减少因等待远程服务的返回而影响...原创 2018-11-09 14:26:56 · 167 阅读 · 0 评论 -
Java的异步编程(二):Future源码剖析
一:简介1.上文介绍了Future的使用,Future一般搭配Callable来使用,一般我们使用Thread或者ExecutorService来执行,并返回执行结果Future;2.在JDK中,FutureTask实现了Future,并且封装了Runnable和Callable两种形式的任务;3.该源码的环境是一个FutureTask被Thread A执行,一个Thread List...原创 2018-12-10 18:09:10 · 545 阅读 · 0 评论 -
Java的异步编程(三):CompletableFuture的简介和成员变量
一:简介上文提到了Future是实现异步调用的工具,但是Future存在着使用不便的缺点,Java8中提供了CompletableFuture来完善异步流程;CompletableFuture能够在不同线程中执行回调,也可以将回调作为继续执行的同步函数,还有在异步的任务完成后,可以通过thenAccept、thenApply、thenCompose等方法继续执行,而无需阻塞等待下一步执行;...原创 2018-12-10 14:18:44 · 1025 阅读 · 0 评论 -
Optional使用(终于明白版)
一:简介以前一直不懂Optional有啥用,感觉太无语了,Java8还把它当做一个噱头来宣传,最近终于发现它的用处了,当然不用函数式编程的话,是没感觉的;举例:一个非洲的Zoo,提供add一个animal进来的功能,可是有可能是用Future来捕捉动物的,也就是说可能没有catch到animal,但是为了防止以后使用的时候,有NPE错误,只有做判断; a)不使用Optional的版本,...原创 2018-12-06 11:13:49 · 60760 阅读 · 47 评论 -
LockSupport的用法和原理
一:简介1.先说下以前刚开始用LockSupport的时候,没有看JDK源码注释,有个地方坑了很久,悲剧,希望大家没我这么low! 原因是:park(Object)方法的用处是“Disables the current thread for thread scheduling purposes unless the permit is available”,unpark(Thread)...原创 2018-12-12 20:31:40 · 404 阅读 · 0 评论 -
Java多线程_Volatile关键字
一、简介volatile是用来描述变量的内存可见性的关键字,使得对变量的读取每次都需要到主内存中去操作,但是不能保证变量操作的原子性,比如count++;引入原因:1)由于Java的内存模型分为工作内存和主内存,变量一般在主内存上分配,但是工作线程会将变量copy到工作内存上去执行;2)这就可能会导致一个线程在主内存中修改了一个变量的值,而另一个线程还在继续使用它在寄存器中的值,会导致数...原创 2018-12-03 17:16:40 · 222 阅读 · 0 评论 -
Java的异步编程(四):CompletableFuture的静态工厂方法、控制方法
一:构造函数和静态工厂方法1.方法列表 a).CompletableFuture提供了丰富的静态构造方法,从线程类型上支持Runnable、Callable,从线程池上支持自己提供的和默认的;//构造方法public CompletableFuture() {}//针对Callable的异步Future静态工厂方法,使用内部的ForkJoinPoolpublic static...原创 2018-12-10 18:10:11 · 780 阅读 · 0 评论 -
Java的异步编程(一):Future的使用
一:Future介绍和使用简介:Future、Callback和Promise模式是在并发编程中经常会用到的非阻塞的模型;a)其中Future模式可以理解为将任务提交给线程执行,其执行结果为Future(未来的结果),期间可以去做其他事情,等需要结果时,再从Future那里获取结果;其中Future模式可以理解为将任务提交给线程执行,其执行结果为Future(未来的结果),期间可以去做其他事...原创 2018-12-05 11:26:47 · 474 阅读 · 0 评论 -
为什么对象应该是不可变的【转载】
http://www.importnew.com/14027.html转载 2018-12-03 10:34:24 · 95 阅读 · 0 评论 -
Lambda表达式
Lambda表达式作为Java8引入的一个重大特性,主要用来解决行为参数化的问题,一定程度上类似于策略设计模式;一:Lambda表达式和接口式编程的策略模式的区别1.Lambda表达式是在接口式编程的基础上,更加抽象了一层,一个Lambda表达式对应一个函数式接口;2.Lambda表达式对应的interface,必须只能有一个方法(default除外),而接口式编程可以有多个方法。...原创 2018-11-05 19:15:40 · 211 阅读 · 0 评论 -
Java8的简介
Java8是Java发布以来改动最大的一个版本,其中主要添加了函数式编程、Stream、一些日期处理类。函数式编程中中新加了一些概念:Lambda表达式、函数式接口、函数引用、默认方法等;Stream中提供了一些流式处理集合的方法,并提供了一些归约、划分等类的方法;日期中添加了ZoneDateTime、DataFormat等线程安全的方法类;一:Lambda介绍1.简介在Java8中引入了...原创 2018-11-05 14:42:58 · 5644 阅读 · 0 评论 -
Gson序列化的一些点
1.忽略不存在的字段、忽略指定字段:@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段。@JsonIgnoreProperties({ "data", "hasMore" })指定的字段不会被序列化和反序列化。 2.FieldNamingPolicy.LOWER_CASE_WITH_UNDERSC...原创 2019-02-12 12:00:04 · 999 阅读 · 0 评论