当前位置: 首页 > news >正文

网站官网建设wordpress 注册 验证码

网站官网建设,wordpress 注册 验证码,退工在那个网站上做,客户关系管理crm课程作为一名Java开发者#xff0c;是否曾经遇到过多线程并发的问题#xff1f;线程数量过多时#xff0c;会导致资源浪费#xff0c;应用性能下降#xff0c;甚至发生线程死锁的情况。那么#xff0c;有没有一种方法可以有效地管理线程#xff0c;避免这些问题呢作为一名Java开发者是否曾经遇到过多线程并发的问题线程数量过多时会导致资源浪费应用性能下降甚至发生线程死锁的情况。那么有没有一种方法可以有效地管理线程避免这些问题呢答案是肯定的那就是线程池。在本文中我们将通过Java的角度探讨线程池的奥妙深入了解线程池的优势学习如何使用线程池实现多线程并发。 线程池是如何创建的 JAVA中创建线程池主要有两类方法一类是通过Executors工厂类提供的方法该类提供了4种不同的线程池可供使用。另一类是通过ThreadPoolExecutor类进行自定义创建。 Executors工厂类 // 五种线程池//     ExecutorService threadPool  null;//     threadPool  Executors.newCachedThreadPool();//有缓冲的线程池线程数 JVM 控制//     threadPool  Executors.newFixedThreadPool(3);//固定大小的线程池//     threadPool  Executors.newScheduledThreadPool(2); // 具有延时定时功能//     threadPool  Executors.newSingleThreadExecutor();//单线程的线程池只有一个线程在工作//     threadPool  new ThreadPoolExecutor();//默认线程池可控制参数比较多   private static void createCachedThreadPool() {        ExecutorService executorService  Executors.newCachedThreadPool();        for (int i  0; i  10; i) {            final int index  i;            executorService.execute(() - {                // 获取线程名称,默认格式:pool-1-thread-1                System.out.println(DateUtil.now()     Thread.currentThread().getName()     index);                // 等待2秒                sleep(2000);            });        }    } ThreadPoolExecutor类 ThreadPoolExecutor提供构造方法需要自己设置具体的参数更加灵活 public ThreadPoolExecutor(int corePoolSize, // 核心线程数                              int maximumPoolSize, // 最大工作线程                              long keepAliveTime, // 存活时间线程没有任务执行时最多保持多久时间会终止。                              TimeUnit unit, // 时间单位                              BlockingQueueRunnable workQueue, // 工作队列                              ThreadFactory threadFactory, // 线程工厂主要用来创建线程默及正常优先级、非守护线程。                              RejectedExecutionHandler handler // 拒绝策略当创建新线程使线程数大于最大线程的情况下会执行                              ) {        // 省略...    } 线程池的主要参数 corePoolSize 核心线程数 核心线程数线程池中始终存活的线程数。 BlockingQueue 工作队列 workQueue new ArrayBlockingQueue(5);//基于数组的先进先出队列有界 workQueue new LinkedBlockingQueue();//基于链表的先进先出队列无界 workQueue new SynchronousQueue();//无缓冲的等待队列无界 threadFactory 线程工厂 用于设置创建线程的工厂可以通过线程工厂给每个创建出来的。线程设置更有意义的名字。使用开源框架 guava 提供的 ThreadFactoryBuilder 可以快速给线程池里的线程设置有意义的名字代码如下 new ThreadFactoryBuilder().setNameFormat(XX-task-%d).build(); handler 拒绝策略拒绝处理任务时的策略4种可选默认为AbortPolicy。 参数描述AbortPolicy拒绝并抛出异常CallerRunsPolicy只用调用者所在线程来运行任务DiscardOldestPolicy抛弃队列头部最旧的一个任务并执行当前任务。DiscardPolicy抛弃当前任务。  RejectedExecutionHandler rejected  null;    rejected  new ThreadPoolExecutor.AbortPolicy();//默认队列满了丢任务抛出异常    rejected  new ThreadPoolExecutor.DiscardPolicy();//队列满了丢任务不异常    rejected  new ThreadPoolExecutor.DiscardOldestPolicy();//将最早进入队列的任务删之后再尝试加入队列    rejected  new ThreadPoolExecutor.CallerRunsPolicy();//如果添加到线程池失败那么主线程会自己去执行 线程池的执行过程 20230211161701 主线程提交任务到线程池如果当前线程数小于核心线程数创建新的线程用于执行任务如果不是下一步。此时核心线程已满再判断工作队列存放的线程数是否满了如果没有满则放入工作队列如果不是下一步。此时工作队列满了再看当前线程数是否等于最大线程数如果是的话执行拒绝策略如果不是创建新的线程执行任务。 配置线程池最大线程数 cpu密集型 maximumPoolSize n*cpu 1io密集型 maximumPoolSize 2 * n * cpu 线程池的关闭 可以通过调用线程池的 shutdown 或 shutdownNow 方法来关闭线程池。 相同点遍历所有的工作线程然后interrupt掉线程 不同点shutdown 调用后不再接受新的任务但是会等待正在运行的线程停止没有执行任务的线程。 shutdownNow 调用后会尝试停止正在运行或暂停任务的线程。 原创不易麻烦点个赞​再走呗 本文由 mdnice 多平台发布
http://www.hkea.cn/news/14539548/

相关文章:

  • wordpress旅游南宁seo企业优化
  • 主题资源网站制作平台互联网公司排名深信服
  • 网站备案通管局在线网站制作工具
  • 无锡网站设计无锡网站建设替代wordpress
  • 建设企业银行网站多少做汽车团购网站
  • led营销型网站建设wordpress有免费空间吗
  • 网站建设人员组成动漫设计专业是什么
  • 新网站做百度百科网站建设多少
  • 国外 配色网站比较火的推广软件
  • 网站策划设计建设图片生成器软件
  • wordpress文章内链seo软件推广
  • 网站建设程序策划书石家庄电商网站排名
  • 江门网站制作流程一般哪些商家需要建设网站
  • 怎么建设推广网站搬瓦工服务器用来做网站
  • 国内公司名字可以做国外网站广州网络公司网络推广
  • 黄石网站开发做个网站的价格
  • 网站开发的硬件设备有切换国外ip的软件
  • 网站策划书基本内容绘画网站建设
  • 建设网站哪些好怎么做县城分类信息网站
  • 高端网站价格wap网站现在还有什么用
  • 广州手机网站建设联系电话wordpress 4.5.3
  • 无锡网页建站建网站相关知识
  • 网站后台开发步骤驻马店网站建设
  • 一般请人做网站和app多少钱网络营销的好处和优势
  • 上海建设摩托官方网站ui设计培训需要多少费用
  • 服务器做的网站 怎么使用郑州正规的网站设计
  • 购物商城外贸网站建设wordpress设置登录页面模板
  • 昆明微网站专业 网站设计公司
  • 网站搭建 成都wordpress动漫电影主题公园
  • 佛山智能模板建站旅游网站模板库