package com.bb;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
* 线程池的实现方式
* @author lang
*
*/
public class ExecutorServiceDemo {
public static void main(String[] args) throws InterruptedException, ExecutionException {
//创建一个缓存线程池
// ExecutorService ex = Executors.newCachedThreadPool();
//创建容量为四个线程的线程池
ExecutorService threadPool = Executors.newFixedThreadPool(4);
//创建一个线程的线程池
// ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor();
threadPool.submit(new MyThread());
threadPool.submit(new MyRunnable());
//实现Callable有返回值
Future<Integer> submit = threadPool.submit(new MyCallable());
Integer result = submit.get();
System.out.println("接收的返回值和为"+result);
//匿名内部类的方式
threadPool.submit(new Runnable() {
public void run() {
for (int i = 0; i <50; i++) {
System.out.println(Thread.currentThread().getName()+"-Runnable-"+i);
}
}
});
//关闭线程池
threadPool.shutdown();
}
}
//继承Thread
class MyThread extends Thread{
@Override
public void run() {
for (int i = 0; i <50; i++) {
System.out.println(Thread.currentThread().getName()+"-MyThread-"+i);
}
}
}
//实现Runalbe 没有返回值
class MyRunnable implements Runnable{
public void run() {
for (int i = 0; i <50; i++) {
System.out.println(Thread.currentThread().getName()+"-myRunable-"+i);
}
}
}
//实习Callable接口有返回值,能声明异常
class MyCallable implements Callable<Integer>{
public Integer call() throws Exception {
int sum = 0;
for (int i = 0; i <50; i++) {
System.out.println(Thread.currentThread().getName()+"-MyCallable-"+i);
sum += i;
}
return sum;
}
}