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

温江网站建设网站推广优化方式

温江网站建设,网站推广优化方式,怎样在百度上发布自己的信息,网贷网站开发目录 1.线程池是什么 2.标准库中的线程池 2.1ThreadPoolExecutor 2.2构造方法参数介绍 2.3拒绝策略(面试易考) 2.4Executor的使用 3.实现线程池 1.线程池是什么 线程池是一种用来管理线程的机制#xff0c;它可以有效地控制线程的创建、复用和销毁#xff0c;从而提高程… 目录 1.线程池是什么 2.标准库中的线程池 2.1ThreadPoolExecutor 2.2构造方法参数介绍 2.3拒绝策略(面试易考) 2.4Executor的使用 3.实现线程池 1.线程池是什么 线程池是一种用来管理线程的机制它可以有效地控制线程的创建、复用和销毁从而提高程序的性能和资源利用率。 想象这么⼀个场景 在学校附近新开了⼀家快递店老板很精明想到⼀个与众不同的办法来经营。店里没有雇⼈而是 每次有业务来了就现场找⼀名同学过来把快递送了然后解雇同学。这个类⽐我们平时来⼀个任 务起⼀个线程进行处理的模式。 很快⽼板发现问题来了每次招聘 解雇同学的成本还是非常高的。老板还是很善于变通的知道 了为什么⼤家都要雇⼈了所以指定了⼀个指标公司业务⼈员会扩张到 3 个⼈但还是随着业务 逐步雇⼈。于是再有业务来了老板就看如果现在公司还没 3 个⼈就雇⼀个⼈去送快递否则 只是把业务放到⼀个本本上等着 3 个快递⼈员空闲的时候去处理。这个就是我们要带出的线程池的模式。 线程池最大的好处就是减少每次启动、销毁线程的损耗。 2.标准库中的线程池 2.1ThreadPoolExecutor 2.2构造方法参数介绍 以最后一个构造方法为例: Java的 ThreadPoolExecutor 是一个线程池执行器用于管理和调度线程的执行。它有以下几个参数 1.corePoolSize核心线程数         即线程池中保持活动状态的最小线程数。如果线程池中的线程数小于corePoolSize则即使其他线程是空闲的ThreadPoolExecutor也会创建新的线程来处理任务。 2.maximumPoolSize最大线程数         即线程池中允许的最大线程数。当队列满了且当前线程数小于maximumPoolSize时ThreadPoolExecutor会创建新的线程来处理任务。 3.keepAliveTime线程保持活动的时间         即当线程池中的线程数量大于corePoolSize时空闲线程被保留的最长时间。超过这个时间空闲线程将被终止。 4.unit线程保持活动时间的单位         可以是纳秒、微秒、毫秒、秒、分钟、小时或天。 5.workQueue任务队列         用于保存等待执行的任务。ThreadPoolExecutor提供了多种类型的队列如ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue等。 6.threadFactory线程工厂         用于创建新线程。可以通过实现ThreadFactory接口来自定义线程的创建过程。 7.handler拒绝策略         用于处理无法添加到线程池的任务。拒绝策略可以ThreadPoolExecutor提供的几种默认策略如AbortPolicy、CallerRunsPolicy、DiscardPolicy和DiscardOldestPolicy也可以自定义实现RejectedExecutionHandler接口来定义自己的策略。 这些参数可以通过ThreadPoolExecutor的构造方法来设置也可以通过相应的setter方法进行设置。根据具体的需求可以调整这些参数来优化线程池的性能和行为。 2.3拒绝策略(面试易考) 在多线程编程中当线程池无法接受新的任务时就会触发拒绝策略RejectedExecutionHandler。拒绝策略是一个接口用于定义当线程池无法接受新的任务时应该如何处理这些被拒绝的任务。 在Java中有四种内置的拒绝策略 1.AbortPolicy默认当线程池无法接受新的任务时会抛出RejectedExecutionException异常。2.CallerRunsPolicy当线程池无法接受新的任务时会由调用execute方法的线程来执行该任务。3.DiscardOldestPolicy当线程池无法接受新的任务时会抛弃队列中最旧的任务然后尝试再次提交新的任务。4.DiscardPolicy当线程池无法接受新的任务时会直接抛弃被拒绝的任务。 除了以上四种内置的拒绝策略我们还可以自定义拒绝策略只需要实现RejectedExecutionHandler接口并实现其唯一的方法rejectedExecution(Runnable r, ThreadPoolExecutor executor)。在该方法中可以根据需求实现自定义的拒绝逻辑如记录日志、发送通知等。然后可以通过ThreadPoolExecutor的setRejectedExecutionHandler方法将自定义的拒绝策略设置给线程池。 ThreadPoolExecutor 本身用起来比较复杂, 因此标准库还提供了另一个版本, 把ThreadPoolExecutor封装了一下. 这个版本就是Executors类. Executors类创建的线程池适用于一些简单的场景不需要过多的自定义配置。而ThreadPoolExecutor适用于需要更多自定义配置的场景可以根据需要灵活地配置线程池。 Executors中的方法: 2.4Executor的使用 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class ThreadDemo32 {public static void main(String[] args) {ExecutorService service Executors.newFixedThreadPool(4);//使用submit添加任务service.submit(new Runnable() {Overridepublic void run() {System.out.println(hello);}});//ThreadPoolExecutor也是通过submit添加任务, 只是构造方法不同} } 3.实现线程池 核⼼操作为 submit, 将任务加⼊线程池中使⽤ Worker 类描述⼀个⼯作线程. 使⽤ Runnable 描述⼀个任务. 使⽤⼀个 BlockingQueue 组织所有的任务 每个 worker 线程要做的事情: 不停的从 BlockingQueue 中取任务并执⾏. 指定⼀下线程池中的最⼤线程数 maxWorkerCount; 当当前线程数超过这个最⼤值时, 就不再新增 线程了. import java.util.ArrayList; import java.util.List; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue;class MyThreadPoolExecutor {private final ListThread threadList new ArrayList();private BlockingQueueRunnable queue new ArrayBlockingQueue(1000);//n来指定创多少的线程public MyThreadPoolExecutor(int n) {for(int i 0; in; i) {Thread t new Thread(()- {//线程要做的事情是把任务队列中的任务不停的取出来,并且去执行while(true) {try {//此处的take带有阻塞功能, 如果队列为空, 此处就阻塞Runnable runnable queue.take();//取出一个任务就执行一个任务即可runnable.run();}catch (InterruptedException e) {e.printStackTrace();}}});t.start();threadList.add(t);}}public void submit(Runnable runnable) throws InterruptedException {queue.put(runnable);} } 使用示例 public class ThreadDemo33 {public static void main(String[] args) throws InterruptedException {MyThreadPoolExecutor executor new MyThreadPoolExecutor(4);for (int i 0; i 1000; i) {int n i;executor.submit(new Runnable() {Overridepublic void run() {System.out.println(执行任务 n , 当前线程为: Thread.currentThread().getName());}});}} }
http://www.zqtcl.cn/news/690314/

相关文章:

  • 深圳网站建设推进旗县政务网站建设工作方案
  • 南宁 网站建设网站集约建设
  • 做网站编辑好吗吉林省四平市
  • 石家庄网站制作最新军事新闻最新消息视频
  • 高端品牌网站设计企业网站建设wordpress文章前阅读
  • 广州做网站星珀各电商网站的特点
  • 西安模板做网站广州微信网站建设平台
  • 网站开发硬件工程师待遇微信商城有哪些第三方平台
  • 基于响应式设计的网站建设软件开发项目甘特图
  • 绍兴兴住房和城乡建设局网站网站更换名称需要重新备案吗
  • 跨境电商网站开发文档网站建设费可摊几年
  • 怎样建设一个游戏网站随便玩玩在线制作网站
  • 免费的成品网站用织梦模板做网站
  • 彩票网站开发 极云有的域名怎样做网站
  • 网店运营推广网站买个天猫店多少钱一个
  • 资讯网站排版广告公司取名大全集
  • 织梦网站seo安徽建设厅网站
  • 北京智能模板建站如何增加网站的索引量
  • 哪个网站专做进口商品的网站备案好麻烦
  • 南京网站制作哪家专业接口网站开发
  • 网站正在建设中9797鲜花网页设计模板
  • wordpress怎么自动更新网站地图现在最流行的网站开发工具
  • 科技局网站查新怎么做vs网站制作教程
  • 网站开发流程文档东莞英文建站公司
  • 怎样建俄文网站wordpress国产主题推荐
  • 网站开发晋升空间 路径秦皇岛房管局官网
  • 中山网站建设sipocms做家电网站好
  • 石家庄建设局网站怎么打不开手机网站素材
  • 电影网站怎么做要多少钱中企动力 网站价格
  • 长沙企业如何建网站爱用建站