线程池的用法及其思想最好有例子。java.util.concurrent.ExecutorService;这个类是实现了线程池么?实现线程池的方法有几种?谢谢解惑!!!

解决方案 »

  1.   

    简单给你说一下, 线程池 和 数据库连接池这种其实差多。   主要就是 因为 线程管理困难,并且创建开销较大
     所以我们就创建线程池来提供服务,当有需要服务的任务时我们找到线程池中空闲的线程来提供服务,服务过后再放回池中。  如果池中 无空闲线程, 可能选择任务阻塞等待,或者返回。   newFixedThreadPool(int i); 用来创建固定线程数量线程池
    newSingleThreadPool();创建单线程的线程池
    newCachedThreadPool(); 创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们
    上面都是Executors 的方法ExecutorService这个类实现的是对线程池进行操作
     
      

  2.   

    only 20score you say a j8 mao ?
      

  3.   

    http://blog.csdn.net/daijope/article/details/6559531
      

  4.   

    线程池:预先创建一定数量的线程,需要时,从池中找到一个空闲的线程来用,用完
    后也不要退出线程,如此往复。若池中线程都处于忙碌状态时,则将请求阻塞。使用
    线程池的好处是:避免了频繁的创建及销毁线程的资源开销。
    java.util.concurrent.ExecutorService这个类确是可以用来方便地实现线程池,
    如3楼所说,有3中模式:
    (1)CachedThreadPool:将为每个任务都创建一个线程。
    (2)FixedThreadPool:使用有限的线程集来执行所要提交的任务。
    (3)SingleThreadPool:类似于线程集数量为1的FixedTheradPool,它会将所提交的
    任务进行排队,每个任务都会在下一个任务开始运行前结束,所有任务都使用相同的线程。我所了解的线程池的使用一般是在服务器端/客户端网络编程时有所使用,服务器对于
    客户端所过来的请求,可以有多种方式:
    (1)依次处理这些请求(这种是初学socket弄得玩的东西)
    (2)为每个请求开辟一个进程(类unix系统可能的实现方式,加入请求不是太多的话,在
    Java中可忽略此中方式,初学java,反正我没见过Java中的多进程)
    (3)为每个请求开辟一个线程(常规方法,效率较高,但考虑到若是请求过多时,势必
    开辟了很多的线程,服务器资源也消耗得厉害,所以就需要管理这些线程了,常见的方法就
    是采用线程池啦)
    至于实例,网上蛮多,自行去找找啦……