首页 > 代码库 > 使用ExecutorService实现线程池
使用ExecutorService实现线程池
ExecutorService是java提供的用于管理线程池的类。
线程池的作用:
- 控制线程数量
- 重用线程
当一个程序中创建了许多线程,并在任务结束后销毁,会给系统带来过度消耗资源,以及过度切换线程的危险,从而可能导致系统崩溃。为此我们应使用线程池来解决这个问题。
线程池的概念:
首先创建一些线程,它们的集合称为线程池,当服务器受到一个客户请求后,就从线程池中取出一个空闲的线程为之服务,服务完后不关闭该线程,而是将该线程还回到线程池中。
在线程池编程模式下,任务是提交给整个线程池,而不是交给某个线程,线程池拿到任务就在内部找空闲的线程,再把任务交给内部的空闲线程,一个线程只能执行一个任务,但可以向线程池提交多个任务。
线程池的主要实现方法:
- Executors.newCachedThreadPool()
创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们
- Executors.newFixedThreadPool(int nThreads)
创建一个可重用固定线程集合的线程池,以共享的无界队列方式来运行这些线程。
下面以一段代码演示线程池的使用:
public static void main(String[] args) { ExecutorService threadpoo1 = Executors.newFixedThreadPool(2); for(int i=0;i<5;i++){ Runnable runn=new Runnable() { public void run() { Thread t=Thread.currentThread(); try { System.out.println(t+":正在运行"); Thread.sleep(5000); System.out.println(t+"运行结束"); } catch (Exception e) { System.out.println("线程被中断了"); } } }; threadpoo1.execute(runn); System.out.println("指派了一个任务交给线程池"); threadpoo1.shutdown(); System.out.println("停止线程池了!"); }
使用ExecutorService实现线程池
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。