03 2018 档案
摘要:1. 运行时常量池和静态变量都存储到了堆中,MetaSpace存储类的元数据,MetaSpace直接申请在本地内存中(Native memory),这样类的元数据分配只受本地内存大小的限制,OOM问题就不存在了。除此之外,还有其他很多好处: 2. 其实,移除永久代的工作从JDK1.7就开始了。JDK
阅读全文
摘要:RocketMQ 客户端最佳实践 1. Producer最佳实践 发送消息注意事项 1). 一个应用尽可能用一个Topic,消息子类型用tags来标识,tags可以由应用自由设置。 2). 消息发送成功或者失败,要打印消息日志,务必要打印sendresult和key字段。 SEND_OK,消息发送成
阅读全文
摘要:1. CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 2. CyclicBarrie: 字面意思回环栅栏,通过它可
阅读全文
摘要:1. Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果。 Future类位于java.util.concurrent包下,它是一个接口,在Future接口中声明了5个方法,
阅读全文
摘要:1. 线程池状态: runState表示当前线程池的状态,它是一个volatile变量用来保证线程之间的可见性; 如果调用了shutdown()方法,则线程池处于SHUTDOWN状态,此时线程池不能够接受新的任务,它会等待所有任务执行完毕; 如果调用了shutdownNow()方法,则线程池处于ST
阅读全文
摘要:基础知识: 1. ConcurrentHashMap: (JDK1.7) segment数组,分段锁;segment 内部是 HashEnty数组,类似HashMap; 统计长度的方法,先不加锁统计两次,如果一样即为长度,否则加锁,重新统计。先采用不加锁的方式,连续计算元素的个数,最多计算3次:如果
阅读全文