多线程实现方案三:实现Callable 接口

Posted zuixinxian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程实现方案三:实现Callable 接口相关的知识,希望对你有一定的参考价值。

多线程实现的方式三:

A:创建一个线程池对象,控制要创建几个线程对象。

  public static ExecutorService newFixedThreadPool(int nThreads)

B:做一个类实现Callable接口。

C:调用如下方法即可

  Future<?> submit(Runnable task)

  <T> Future<T> submit(Callable<T> task)

D:我就要结束,可以吗?

  可以。

package com.test;

import java.util.concurrent.Callable;

public class MyCallable implements Callable<Integer> {

    private int number;

    public MyCallable(int number){
        this.number = number;
    }

    @Override
    public Integer call() throws Exception {
        int sum = 0;

        for(int x=1;x<=number;x++){
            sum +=x;
        }

        return sum;
    }
}
package com.test;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class CallableTest {

    public static void main(String[] args) throws
            InterruptedException, ExecutionException {

        /**创建线程池对象*/
        ExecutorService pool = Executors.newFixedThreadPool(2);

        /**可以执行Runnable对象或者Callable对象代表的线程*/
        Future<Integer> f1 = pool.submit(new MyCallable(100));
        Future<Integer> f2 = pool.submit(new MyCallable(200));

        /**V get()*/
        Integer i1 = f1.get();
        Integer i2 = f2.get();
        System.out.println(i1);
        System.out.println(i2);

        /**结束*/
        pool.shutdown();

    }

}

运行结果:

5050
20100

 

以上是关于多线程实现方案三:实现Callable 接口的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程之Callable接口的实现

创建执行线程方式三:实现Callable接口

Java 多线程实现的三种方式

Java总结——通过Callable接口实现多线程,生产者消费者问题,多线下载(复制)文件

java 多线程-实现Callable接口

Java多线程之Callable接口的实现