当前位置: 移动技术网 > IT编程>开发语言>Java > java多线程Future和Callable类示例分享

java多线程Future和Callable类示例分享

2019年07月22日  | 移动技术网IT编程  | 我要评论

www123494com,食品添加剂种类,湖底走出的丧尸

一,描写叙述

    ​在多线程下编程的时候。大家可能会遇到一种需求,就是我想在我开启的线程都结束时,同一时候获取每一个线程中返回的数据然后再做统一处理,在这种需求下,future与callable的组合就派上了非常大的用场。

也有人会说,我能够使用同步来完毕这个需求啊,普通情况下确实能够。可是在一种特殊情况下就不行了:

    ​想象,你开启了多个线程同步计算一些数据,可是大家都知道,线程是会争用资源的,也就是说。你开启多个线程来同步计算数据时。事实上线程之间的计算顺序是不可空的,当然除非你非非常大周折去处理也不无可能。在这样的情况下。future和callable的组合就是不二之选了。

二,样例

这两个类的样例事实上非常easy,主要就看自己在实际运用中能不能找到他们的用武之地了。上代码:

package test;
 
import java.util.concurrent.callable;
import java.util.concurrent.executionexception;
import java.util.concurrent.executorservice;
import java.util.concurrent.executors;
import java.util.concurrent.future;
 
public class feturecallabletest {
  private static executorservice service = executors.newfixedthreadpool(100);
  private static int count = 1;
  public static void main(string[] args) throws interruptedexception, executionexception {
    int sum = 0;
    for(int i = 0; i < 100; i++) {
      future<integer> future = service.submit(new callable<integer>(){
   
        @override
        public integer call() throws exception {
          system.out.println(thread.currentthread().getname());
          return ++count;
        }
         
      });
      int f = future.get();
      sum += f;
      system.out.println("future is " + f);
    }
    system.out.println("sum is " + sum);
    service.shutdownnow();
  }
 
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网