线程池的使用
public classMyRunnable implementsRunnable {
@Override
public void run() {
for (int x = 0; x < 100; x++){
System.out.println(Thread.currentThread().getName()+ ":"+ x);
}
}
}
importjava.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/*
* 线程池的好处:线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。
*
* 如何实现线程的代码呢?
* A:创建一个线程池对象,控制要创建几个线程对象。
* public staticExecutorService newFixedThreadPool(int nThreads)
* B:这种线程池的线程可以执行:
* 可以执行Runnable对象或者Callable对象代表的线程
* 做一个类实现Runnable接口。
* C:调用如下方法即可
* Future<?>submit(Runnable task)
* <T> Future<T>submit(Callable<T> task)
* D:我就要结束,可以吗?
* 可以。
*/
public class ExecutorsDemo {
publicstatic void main(String[] args) {
//创建一个线程池对象,控制要创建几个线程对象。
//public static ExecutorService newFixedThreadPool(int nThreads)
ExecutorServicepool = Executors.newFixedThreadPool(2);
//可以执行Runnable对象或者Callable对象代表的线程
pool.submit(newMyRunnable());
pool.submit(newMyRunnable());
//结束线程池
pool.shutdown();
}
}
运行结果:
pool-1-thread-2:0
pool-1-thread-2:1
pool-1-thread-1:0
pool-1-thread-2:2
pool-1-thread-1:1
pool-1-thread-2:3
pool-1-thread-2:4
pool-1-thread-1:2
pool-1-thread-2:5
pool-1-thread-1:3