android中的常用线程池区别--转载

来源:互联网 发布:知天下事打一个动物 编辑:程序博客网 时间:2024/04/30 01:39

http://www.oschina.net/question/565065_86540----这是原文地址,讲解线程池很详细

public class MyThread implements Runnable{

public void run(){

System.out.println(Thread.currentThread().getName()+"正在执行");

}

}

public class TestCachedThreadPool {

public static void main(String[] args) {

//这是缓存线程池,无界限城池,可以进行自动线程回收
ExecutorService executors = Executors.newCachedThreadPool();

MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
MyThread t3 = new MyThread();
MyThread t4 = new MyThread();

executors.submit(t1);
executors.submit(t2);
executors.submit(t3);
executors.submit(t4);

executors.shutdown();
}

}

控制台打印为

pool-1-thread-2正在执行
pool-1-thread-3正在执行
pool-1-thread-1正在执行
pool-1-thread-4正在执行


public class TestExecutors {
public static void main(String[] args) {
//固定数量线程池
ExecutorService executors = Executors.newFixedThreadPool(2);
MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
MyThread t3 = new MyThread();
MyThread t4 = new MyThread();

executors.submit(t1);
executors.submit(t2);
executors.submit(t3);
executors.submit(t4);

//关闭线程池
executors.shutdown();
}
}

控制台打印

pool-1-thread-1正在执行
pool-1-thread-2正在执行
pool-1-thread-1正在执行
pool-1-thread-2正在执行


public class TestSingleThreadPool {
public static void main(String[] args) {
//这个是单个线程池,每次只能执行一个线程,当一个线程执行完毕之后再执行下一个线程
ExecutorService executors = Executors.newSingleThreadExecutor();

MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
MyThread t3 = new MyThread();
MyThread t4 = new MyThread();

executors.submit(t1);
executors.submit(t2);
executors.submit(t3);
executors.submit(t4);

executors.shutdown();
}
}

控制台打印

pool-1-thread-1正在执行
pool-1-thread-1正在执行
pool-1-thread-1正在执行
pool-1-thread-1正在执行





0 0
原创粉丝点击