Java 线程池(一)---Executor

本文对比了串行和并行任务处理方式,并介绍了Java线程池的使用方法及其优势,包括减少线程创建销毁开销、提高响应速度等。此外还讲解了Executor框架及ExecutorService接口,帮助开发者更好地管理和控制线程。
Java 线程池(一)


1.串行的执行任务
如: class singleThread
{
    public static void main(String[] args) throws IOException
    {
        ServerSocket socket = new ServerSocket(80);
        while(true)
        {
           Socket connect = socket .accept();
            //执行方法
           handleRequest(connect);
         }


     }
}


并行执行任务
如:
class concurrentThread
{
    public static void main(String[] args) throws IOException
    {
        ServerSocket socket = new ServerSocket(80);
        while(true)
        {
          final  Socket connect = socket .accept();
            //执行方法
           Runnable task = new Runnable()
           {
                public void run()
                {
                handleRequest(connect);
                }
            }
            new Thread(task).start();
         }


     }
}


串行和并行的区别:
a. 任务处理过程从主线程中分离出来,使得主循环能够更快得重新等待下一个到来的连接
b. 任务可以并行处理,可以同时处理服务多个请求。




2.Executor 框架
  每当看到下面这种形式的代码时:
   new  Thread(runnable).start()
  并且你希望获得一种更灵活的执行策略时,请考虑用Executor代替Thread


  线程池是指管理一组同构工作线程的资源池
  在线程池中执行任务比“为每个任务分配一个线程”的优势:
  a 重用现有的线程,而不是创建新线程,可以在处理多个请求时分摊在线程创建和销毁过程中产生的巨大开销
  b 当请求到达时,工作线程已经存在,不会由于等待创建线程而延迟任务的执行


  为了解决执行任务的生命周期问题,Executor扩展了ExecutorService接口,提供生命周期的管理方法
  ExecutorService的生命周期由3种状态:运行、关闭和已终止 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值