
java
老醋
这个作者很懒,什么都没留下…
展开
-
ExecutorCompletionService源码分析
之前有介绍过CompletionService用法的文章,这里直接拷过来,其实也是拷王宝令大佬的付费专栏里的介绍。简介CompletionService接口用于批量执行异步任务,批量执行异步任务时更加优雅且更实用。实现类是ExecutorCompletionService,提供了两个构造方法:要传入一个线程池,还可以传入一个阻塞队列保存任务执行结果的 Fut...原创 2019-09-15 17:38:47 · 236 阅读 · 0 评论 -
Runtime的addShutdownHook(Thread thtead)方法
最近看李号双老师的《深入拆解Tomcat&Jetty》专栏,里面提到了Catalina如何在使用Ctrl+c强制关闭Tomcat进程时,Tomcat如何优雅的停止并清理资源,使用到了想JVM注册一个“关闭钩子”。 具体的用法是使用Runtime.getRuntime().addShutdownHook(Thread hook)方法来实现。Runtime类的注...原创 2019-06-11 09:35:18 · 482 阅读 · 0 评论 -
SynchronousQueue功能分析
之前没用过 Executors.newCachedThreadPool() 线程池,被问及干啥的,为啥这么干,不会然后就被鄙视了。转载一篇同步队列的用法。SynchronousQueue:同步Queue,属于线程安全的BlockingQueue的一种,此队列设计的理念类似于"单工模式",对于每个put/offer操作,必须等待一个take/poll操作,类似于我们的现实生...转载 2019-04-12 16:51:39 · 1127 阅读 · 0 评论 -
ThreadPoolExecutor使用注意事项
之前做过源码分析,链接如下:https://blog.youkuaiyun.com/u013759134/article/details/83659453可知,ThreadPoolExecutor线程池对新到任务的处理流程简述如下(为了简单起见,暂只考虑Running状态):1、查看当前工作线程数是否小于corePoolSize,如果是直接添加一个工作线程执行任务,不是转到22、添加任务到任务...原创 2019-04-12 11:34:13 · 772 阅读 · 0 评论 -
Java中强、软、弱、虚引用
本文转载自:http://www.cnblogs.com/xdouby/p/6701941.htmljava中有四种引用类型,分别表述如下: 1)强引用,任何时候都不会被垃圾回收器回收,如果内存不足,宁愿抛出OutOfMemoryError。 2)软引用,只有在内存将满的时候才会被垃圾回收器回收,如果还有可用内存,垃圾回收器不会回收。 3)弱引用,只要垃圾回收器运行,就肯定...转载 2019-04-10 21:43:45 · 151 阅读 · 0 评论 -
Java动态代理
Java提供动态代理的功能,spring AOP即利用动态代理的方式来实现面向切面编程,我们用一个很简单的例子来看一下Java本身的动态代理怎么用的。可以看到,要实现对对象的动态代理,要调用Proxy.newProxyInstance()方法,改方法的入参需要传入被代理对象的类加载器、被代理对象的接口、一个InvocationHandler的实例。代理对象执行被代理对象方法时,会调用Inv...转载 2019-04-10 11:11:59 · 107 阅读 · 0 评论 -
java对象赋值问题
最近看FutureTask代码,里面有一个方法时遍历等待FutureTask任务执行完毕的链表,链表节点中保持等待任务完成的被阻塞的线程。这个遍历一下又让我懵了一下,再次记录一下java值传递、函数传参的问题。 我理解 WaitNode p = waiters 相当于把 p 指向waiters引用的对象,不管 p=null 还是 waiters=null ,...原创 2019-02-17 21:13:22 · 999 阅读 · 0 评论