ForkJoinPool
ForkJoinPool和ThreadPoolExecutor不仅都是ExecutorService接口的实现,还都是AbstractExecutorService的子类。 从ThreadPoolExecutor#execute可以看出来,它是一个池化的实现,需要协调线程的创建,并从一个BlockingQueue里取任务。那么通过看ForkJoinPool#execute,就可以看到它的工作...
ForkJoinPool和ThreadPoolExecutor不仅都是ExecutorService接口的实现,还都是AbstractExecutorService的子类。 从ThreadPoolExecutor#execute可以看出来,它是一个池化的实现,需要协调线程的创建,并从一个BlockingQueue里取任务。那么通过看ForkJoinPool#execute,就可以看到它的工作...
jdk的CompletableFuture和guava的ListenableFuture,在功能上基本是一致的。都允许对一个任务添加回调。但是二者的风格不同: ListenableFuture是回调注册风格:通过addListener()或addCallback()注册回调函数,更接近传统的事件监听模式; CompletableFuture是函数式风格:通过thenApply()、...
ListenableFuture是Guava里拓展了Future的接口,增加了回调行为,所以要比Future更强大。Guava建议在任何使用Future的场合都使用ListenableFuture取代Future,也是比较有道理的。 任务执行后的回调 ListenableFuture ListeningExecutorService FutureCallable - 更高...
有了线程执行器Executor,为什么还要有ExecutorService? 因为executor作为任务执行者最简单的抽象,实在是太简单了,以至于功能有限,无法控制任务的执行,感知任务的状态。它只提供了execute方法,返回值是void,对任务的执行没有暴露任何控制接口。、 任务 Runnable/Callable - 简单任务表示 Future ...
介绍一下线程执行器(Executor#execute),和其中一种比较复杂的实现,线程池。 Executor:任务执行器 ThreadPoolExecutor:池化任务执行器 BlockingQueue的add/offer/put worker是什么 worker绑定线程 线程绑定任务? work...
关于异步执行的所有: 介绍Executor:线程执行器(Executor)和线程池 介绍Future和ExecutorService(主要是submit),因为它执行任务用的还是Executor#execute:线程执行服务:ExecutorService 介绍ListenableFuture,因为它依托于FutureTask在执行完任务后的回调机制,回调其他listener:...
碰瓷deepseek的manus,在刚出来的时候显得恶臭味儿十足,被大家一通口诛笔伐。最近听同事又提及manus,才重新想起这个已经归于平静的产品。毕竟也是个不错的东西,散掉了恶臭味儿,到底有多方便,还是值得体验一下的。 确实不错。 使用体验 惊艳初见 终于活成了讨厌的样子 前路漫漫 使用体验 https://...
把文本编码成向量,用向量搜索向量。 向量搜索 非/对称语义搜索 模型编码 单位向量 knn ann算法 向量量化 binary quantization scalar(int8) quantization ...
因为被xy面试到了,所以当时又趁热总结了一下。现在看线程执行器(Executor)和线程池吧。
最近给spring data elasticsearch提交了一些PR(#2793、#2802),趁此机会系统看一下spring data commons的文档,顺便填一下之前说的spring data elasticsearch文档的坑。而且二者正好一个是抽象规范,一个是落地实现,结合起来看会好理解很多。实际上,后者也从前者复用了不少文档。 填坑:Spring Data - Ela...