天天看点

多线程(二)线程池

规定一个容器来存储线程,当有任务需要是,从中取走一个线程,用完之后归还。

先学习两个类。

ExecutorService:线程池类。

多线程(二)线程池

Executors:线程池创建工厂类。

1.先创建一个类,实现Runnable接口,重写run()方法

2.新建测试类,获取线程池对象,创建线程任务,执行任务之后销毁任务。

3.执行结果

多线程(二)线程池

可以看到,我们规定了两条线程,但开启了三个任务,所以第三个任务就会处于等待状态,等待有线程空闲之后,它再开始。

我们发现,使用Runnable接口时,重写该方法并不能有返回值且不能抛出异常,那我们要有返回值或要抛出异常时,就是用到Callable接口。

1.创建类,实现Callable接口,实现接口时,要表明泛型,这样在点击重写方法时会直接将该泛型的返回值写出,重写的方法上也可以添加异常。

2.创建测试类,获取线程池对象,创建线程任务对象,用Future接受执行对象的返回值。

多线程(二)线程池

1.首先,要先创建一个类继承Callable,泛型的话,因为是两束相加的结果,所以是Integer类型的

因为重写的方法并不能使用传参数的方法来获取数,所以使用另外一种,成员变量和构造方法的办法来获取数值。

2.创建测试类,按照顺序操作