A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© syusouki 中级黑马   /  2015-9-28 23:07  /  118 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 syusouki 于 2015-9-29 22:13 编辑

  1.当使用继承Thread的方式实现线程,如果想反复的使用此线程,不能多次调用start();可以多次实例化此类的对象,然后再启动线程。                                
  2.如果线程的启动,或者构造比较耗时,那么就大大的影响效率;                                
  3.JDK5之后,提供了一个"线程池",这个"线程池"可以缓存一些"线程对象",如果需要再次使用时,无需重复构造,直接从"池"中取出线程对象使用即可;                                
  4.JDK5新增了一个Executors工厂类来产生线程池,有如下几个方法                                
        public static ExecutorService newCachedThreadPool():创建一个可根据需要创建新线程的线程池                        
        public static ExecutorService newFixedThreadPool(int nThreads):创建一个可重用固定线程数的线程池                        
        public static ExecutorService newSingleThreadExecutor():创建一个使用单个worker线程的ExecutorService对象,                        
        该对象表示一个线程池,可以执行Runnable对象或者Callable对象代表的线程。它提供了如下方法:                        
        Future<?> submit(Runnable task)                        
        <T> Future<T> submit(Callable<T> task)                        
                                
                                
  1.获取一个线程池对象:                                
         ExecutorService service = Executors.newFixedThreadPool(2);                        
  2.调用线程池的submit()方法执行线程:                                
  3.接收返回值:                                
        Future<Integer> result = service.submit(new MyCallable());                        
        Integer val = result.get();                        

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马