package cn.itcast.demo5;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/*
- JDK1.5新特性,实现线程池程序
- 使用工厂类 Executors中的静态方法创建线程对象,指定线程的个数
- static ExecutorService newFixedThreadPool(int 个数) 返回线程池对象
- 返回的是ExecutorService接口的实现类 (线程池对象)
- 接口实现类对象,调用方法submit (Ruunable r) 提交线程执行任务
*/
public class ThreadPoolDemo {
public static void main(String[] args) {
//调用工厂类的静态方法,创建线程池对象
//返回线程池对象,是返回的接口
ExecutorService es = Executors.newFixedThreadPool(2);
//调用接口实现类对象es中的方法submit提交线程任务
//将Runnable接口实现类对象,传递
es.submit(new ThreadPoolRunnable());
es.submit(new ThreadPoolRunnable());
es.submit(new ThreadPoolRunnable());
}
}
//第一种方法,实现接口Runable,重写run方法
package cn.itcast.demo5;
public class ThreadPoolRunnable implements Runnable {
public void run(){
System.out.println(Thread.currentThread().getName()+" 线程提交任务");
}
}
-
*二**
package cn.itcast.demo5;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/*
- 实现线程程序的第三个方式,实现Callable接口方式
- 实现步骤
- 工厂类 Executors静态方法newFixedThreadPool方法,创建线程池对象
- 线程池对象ExecutorService接口实现类,调用方法submit提交线程任务
- submit(Callable c)
*/
public class ThreadPoolDemo1 {
public static void main(String[] args)throws Exception {
ExecutorService es = Executors.newFixedThreadPool(2);
//提交线程任务的方法submit方法返回 Future接口的实现类
Future f = es.submit(new ThreadPoolCallable());
String s = f.get();
System.out.println(s);
}
}
第三种 * Callable 接口的实现类,作为线程提交任务出现
package cn.itcast.demo5;
/
- Callable 接口的实现类,作为线程提交任务出现
- 使用方法返回值
*/
import java.util.concurrent.Callable;
public class ThreadPoolCallable implements Callable{
public String call(){
return “abc”;
}
}
**