0%

default方法的加入是为了兼容jdk8以前的版本的需要。
(1)当前有两个接口MyInterface和MyInterface1,它们都有相同名字的default方法,之后实现类Myclass同时implements了MyInterface和MyInterface1,同时Myclass实现了default方法,此时Myclass调用default调的是谁的?

Read more »

CopyOnWriteArrayList和CopyOnWriteArraySet应用场合一般 是在读多写少的情况,比如黑名单,他们之间的区别就是list和set的区别,但是在实现上CopyOnWriteArraySet使用CopyOnWriteArrayList来实现的,就像set使用了hashmap,treeset使用treemap,下面先看CopyOnWriteArrayList的添加操作.

Read more »

自旋锁(Spin lock)
自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。

Read more »

Threadlocal里面使用了一个存在弱引用的map,当释放掉threadlocal的强引用以后,map里面的value却没有被回收.而这块value永远不会被访问到了。 所以存在着内存泄露. 最好的做法是将调用threadlocal的remove方法。
  在threadlocal的生命周期中,都存在这些引用. 看下图: 实线代表强引用,虚线代表弱引用:

Read more »

引言
你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。
消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一。

Read more »