java多线程设计原则_java基础学习_多线程02_多线程、设计模式_day24总结

1 packagecn.itcast_08;2

3 importjava.util.concurrent.ExecutorService;4 importjava.util.concurrent.Executors;5

6 /*

7 * 程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互。8 * 而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。9 *10 * 线程池的好处:线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。11 *12 * 在JDK5之前,我们必须手动实现自己的线程池,从JDK5开始,Java内置支持线程池。13 * JDK5新增了一个Executors工厂类来产生线程池,有如下几个方法14 * public static ExecutorService newCachedThreadPool() 创建一个具有缓存功能的线程池15 * public static ExecutorService newFixedThreadPool(int nThreads) 创建一个可重用的,具有固定线程数的线程池16 * public static ExecutorService newSingleThreadExecutor() 创建一个只有单线程的线程池,相当于上个方法的参数是117 * 这些方法的返回值是ExecutorService对象,该对象表示一个线程池,可以执行Runnable对象或者Callable对象代表的线程。18 *19 * 如何实现线程池呢?20 * A:创建一个线程池对象,明确在线程池中要创建几个线程对象。21 * Executors类的方法:22 * public static ExecutorService newFixedThreadPool(int nThreads)23 * 该方法的返回值是ExecutorService对象,该对象表示一个线程池,可以执行Runnable对象或者Callable对象代表的线程。24 * B:这种线程池的线程可以执行Runnable对象或者Callable对象代表的线程。25 * 即:做一个类实现Runnable接口。26 * C:调用如下方法即可27 * ExecutorService类的方法:28 * Future> submit(Runnable task)29 * Future submit(Callable task)30 * D:线程池中的线程使用完毕后,会自动回到线程池中成为空闲状态,等待下一个对象来使用。31 * 但是呢,我就要结束线程池,可以吗?32 * 可以。33 */

34 public classExecutorsDemo {35 public static voidmain(String[] args) {36 //创建一个线程池对象,明确在线程池中要创建几个线程对象37 //Executors类的方法:public static ExecutorService newFixedThreadPool(int nThreads)

38 ExecutorService pool = Executors.newFixedThreadPool(2);39

40 //这种线程池的线程可以执行Runnable对象或者Callable对象代表的线程

41 pool.submit(newMyRunnable());42 pool.submit(newMyRunnable());43

44 //结束线程池

45 pool.shutdown();46 }47 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值