MS多数据量
https://my.oschina.net/hongliangsun/blog/1546370
使用多线程来执行任务。批量的获取品牌ID的Name,Logo等。使用future逐个的获取结果。如果你想,谁先执行完毕了,就拿到这个结果,做了一个任务执行耗时的排序,就用这个ExcuterService - >ExcuterCompleteService。 相当于做了一个排序。
这个Future和FutureTask有什么区别?好像没有什么区别,一个是接口,一个是具体实现类,同时实现了Runable接口。
解释使用场景。
1:源码解析 Future FutureTask
https://blog.csdn.net/javazejian/article/details/50896505
http://www.cnblogs.com/liduanwen/p/5951730.html
比较不错的一篇文章:强力推荐 https://www.bbsmax.com/A/xl56WnYdrZ/
当时的MS题目
说白了,就是future.get(i),这样生产者和消费者一一对应了。
一语中的。
这样,各个生产者他们的耗时不同,你都是阻塞的,这种调度太低了。
怎么获取一定执行时间的结果呢?
多个线程去执行不同的任务,他们直接也没有依赖关系,每一个任务都会返回一个结果。
其实很简单,就是说队列的。
每一个任务执行完毕就把结果扔到队列里面。主线程就是在这个时间点去从队列里面那结果,拿到就是拿了
没有拿到就是没有了,正确的。ExcetorCompleteService就是这个的,但是,MS说了一定的时间,没有想到这里。
https://blog.csdn.net/wonking666/article/details/76552019
ExecutorService.awaitTermination(long million, TimeUnit unit)
即可了。 要知道参数设置,要知道ExceturCompleteService。
队列,内存队列,串行异步化和map是ms神器呀。都要向上面考虑
=========================================================
threadPoolTaskExecutor 指定超时时间,就获取这一段时间的结果。
executorService使用countDownLatch来使用。
https://blog.csdn.net/kai763253075/article/details/53033853
前者是抛到池子任务,获取结果。
后缀是自己创建一个池子,然后,执行,submit,不需要结果了,或者结果是入参。
executorService就是一个固定大小的线程池。简单,明了,逻辑简单。
而threadPoolTaskExecutor是spring封装的一个bean,更加的有特点,就是获取一段时间的执行结果等等,更风骚。
NO,第一个也可以有多种初始化,多种配置,OK,都可以风骚,只不过thread是spring封装的即可。底层都是executorService。
风骚吧,但是,有先后的顺序,那么就可以Disruptor这种了,这是没有顺序就可以高效起来,有顺序就不行了。
复杂的线程流转。
https://www.jianshu.com/p/c4a31f914cc7
OK,这些都理解了的。
这里没有了用户信息了,就是ID,修改用户信息,就是一部分而已。
网友评论