java多线程创建方式三Callable

2024-10-14 06:45:33

1、创建一个实现callable的实现类具体代码如下所示:import java.util.罕铞泱殳concurre荏鱿胫协nt.Callable;import java.util.concurrent.ExecutionException;/*** 创建线程的方式三:实现callable接口 --》jdk5.0新增*/// 1、创建一个实现callable的实现类public class NumThread implements Callable<Integer> { private int length; public void setLength(int length) { this.length = length; } // 2、实现call方法,将此线程需要执行的操作声明在call方法中 public Integer call() throws Exception { int sum = 0; for (int i = 0; i <= length; i++) { if (i % 2 == 0) { sum += i; System.out.println(i); } } return sum; }}

java多线程创建方式三Callable

2、编写测试类代码如下所示:import java.util.concurrent.FutureTask;public class ThreadNew { public static void 罪焐芡拂main(String[] args) { // 3、创建callable实现类的对象 NumThread numThread = new NumThread(); // 3.1 传参数 numThread.setLength(100); // 4、将此callable实现类的对象作为参数传递到FutureTask的构造器中,创建FutureTask对象 FutureTask<Integer> integerFutureTask = new FutureTask<Integer>( numThread); // 5、将FutureTask作为参数传递Thread构造器中,创建Thread对象,并调用start方法 new Thread(integerFutureTask).start(); try { // 6、获取Callable中call方法中的返回值 // get()返回值即为futureTask构造器参数Callable实现类重写的call的返回值 Integer sum = integerFutureTask.get(); System.out.println("总计:" + sum); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } }}

java多线程创建方式三Callable

3、代码详解:1、相较于Thread和Runable实现多线程的方式其可以获取线程执行的返回值2、在NumThread 中的以下代码是根据set方法方式向callable实现类中传参数,然后再call方法中使用。private int length;public void setLength(int length) {this.length = length;}

4、测试运行代码

java多线程创建方式三Callablejava多线程创建方式三Callable

5、总结:如何理解实现callable接口的方式创建多线程比实现Runable接口创建线程的方式强大? 1、call() 可以返回任意值 2、call() 可以抛出异常,被外面的操作捕获,获取异常的信息 3、Callable是支持泛型的

java多线程创建方式三Callable
猜你喜欢