1、多线程实现的第三种方式:
依赖java线程池,实现Callable接口
2、代码实现步骤:
A:创建一个线程池对象,控制要创建几个线程对象。
public static ExecutorService newFixedThreadPool(int nThreads)
B:这种线程池的线程可以执行:
可以执行Runnable对象或者Callable对象代表的线程
做一个类实现Runnable接口。
C:调用如下方法即可
Future<?> submit(Runnable task)
<T> Future<T> submit(Callable<T> task)
D:结束线程方法
shutdown()方法
3、方式3的优缺点
A、优点:可以有返回值;可以跑出异常
B、缺点:代码比较复杂,一般不用
代码如下:
public class Mycallable implements Callable{
@Override
public Object call() throws Exception {
for(int x= 0; x<100;x++){
System.out.println(Thread.currentThread().getName()+":"+x);
}
return null;
}
}
public static void main(String[] args) {
// 创建线程池对象
ExecutorService pool = Executors.newFixedThreadPool(2);
// 可以执行Runnable对象或者Callable对象代表的线程
pool.submit(new Mycallable());
pool.submit(new Mycallable());
// 结束
pool.shutdown();
} |
|