package cn.itcast_01;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/*
* A:创建一个线程池对象,控制创建线程对象的个数
* public static ExecutorService newFixedThreadPool(int nThread)
* B:这种线程池的线程可以执行
* Runnable对象或者Callable对象代表的线程
* 做一个类实现Runnable接口
* C:调用如下方法即可
* Future<?>submait(Runnable task)
* <T>Future<T>submit(Callable<T> task)
* D:停止线程池
* shutdown();停止线程池
*
* Callable是依赖于线程池实现的,并带有返回值
* 不能直接使用
*/
public class 多线程实现方式3思路及代码实现 {
public static void main(String[] args) {
//创建线程池对象
ExecutorService pool = Executors.newFixedThreadPool(2);
//可以执行Runnable对像或者Callable对像的线程
pool.submit(new MyCallable());
pool.submit(new MyCallable());
//结束
pool.shutdown();
}
}
package cn.itcast_01;
import java.util.concurrent.Callable;
//Callable:带泛型的接口
//这里指定的泛型其实是call()方法的返回值类型
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;
}
}