最近要面临着找工作了,所以恶补下java核心API的东东! 下面是对java线程池的理解记录:
在应用程序中,创建一个线程是一个开销较大的动作,如果应用程序中要使用搭理的线程来处理一些固定的工作,需要反复的创建线程---明智的做法是:我们预先创建一些线程对象,当需要执行任务的时候,就取出线程对象执行任务,执行完毕后又放回线程池。。理解和数据库是一样的概念!
下面看测试代码:
在应用程序中,创建一个线程是一个开销较大的动作,如果应用程序中要使用搭理的线程来处理一些固定的工作,需要反复的创建线程---明智的做法是:我们预先创建一些线程对象,当需要执行任务的时候,就取出线程对象执行任务,执行完毕后又放回线程池。。理解和数据库是一样的概念!
下面看测试代码:
public class MainTest extends Thread {
public static void main(String args[]) {
ExecutorService es=Executors.newFixedThreadPool(10);
Runnable r=new Runnable(){
public void run(){
String name=Thread.currentThread().getName();
count++;
try {
Thread.sleep(1000);
System.out.println("线程名是|:"+name+" "+System.currentTimeMillis());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
for(int i=0;i<50;i++){
//2种方法,体现出线程池的作用
//es.execute(r);利用线程池,一次创建了10个线程,所以一次只能运行10个线程,其他需要运行的线程对象需排队等候,前面的线程执行完成后才能被执行!
//Thread t=new Thread(r);不用到线程池,一次开启50的线程!
//t.start();
}
es.shutdown();
}
private static int count;
}