美文网首页
多线程的补充 获取一定时间的执行结果

多线程的补充 获取一定时间的执行结果

作者: 辰晞 | 来源:发表于2018-05-03 09:12 被阅读0次

    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,不需要结果了,或者结果是入参。

    https://stackoverflow.com/questions/24903658/spring-threadpooltaskexecutor-vs-java-executorservice-cachedthreadpool

    executorService就是一个固定大小的线程池。简单,明了,逻辑简单。

    而threadPoolTaskExecutor是spring封装的一个bean,更加的有特点,就是获取一段时间的执行结果等等,更风骚。

    NO,第一个也可以有多种初始化,多种配置,OK,都可以风骚,只不过thread是spring封装的即可。底层都是executorService。

    风骚吧,但是,有先后的顺序,那么就可以Disruptor这种了,这是没有顺序就可以高效起来,有顺序就不行了。

    复杂的线程流转。

    https://www.jianshu.com/p/c4a31f914cc7

    OK,这些都理解了的。

    这里没有了用户信息了,就是ID,修改用户信息,就是一部分而已。

    相关文章

      网友评论

          本文标题:多线程的补充 获取一定时间的执行结果

          本文链接:https://www.haomeiwen.com/subject/nofkrftx.html