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

外贸网站怎么做站长之家查询域名

外贸网站怎么做,站长之家查询域名,网站域名续费怎么续费,wordpress远程图片参考#xff1a;https://blog.csdn.net/fwt336/article/details/81530581 前言 在开发中为了提高系统的响应速度和处理能力会使用到多线程#xff0c;但线程的创建和释放#xff0c;需要占用不小的内存和资源。如果每次需要使用线程时#xff0c;都new 一个Thread的话https://blog.csdn.net/fwt336/article/details/81530581 前言 在开发中为了提高系统的响应速度和处理能力会使用到多线程但线程的创建和释放需要占用不小的内存和资源。如果每次需要使用线程时都new 一个Thread的话难免会造成资源的浪费而且可以无限制创建之间相互竞争会导致过多占用系统资源导致系统瘫痪。不利于扩展。就像MySQL数据库连接一样每创建一个连接都需要消耗资源所以就引入了数据库连接池线程也引入了线程池的概念需要线程时可以不用创建直接从池中获取在JDK中就为我们提供了ExecutorService。 ExecutorServiceExecutorService 提供了几种不同类型的线程池包括单线程池、固定大小线程池、可缓存线程池和定时任务线程池。通过这些线程池我们可以有效地管理多个任务的执行并且可以控制线程池的大小可以有效控制最大并发线程数提高系统资源的使用率同时避免过多资源竞争避免堵塞同时提供定时执行、定期执行、单线程、并发数控制等功能也不用使用TimerTask了。 1. ExecutorService的创建方式 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueueRunnable workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler)所有线程池最终都是通过这个方法来创建的。 corePoolSize : 核心线程数一旦创建将不会再释放。如果创建的线程数还没有达到指定的核心线程数量将会继续创建新的核心线程直到达到最大核心线程数后核心线程数将不在增加达到核心线程数但没有空闲的核心线程同时又未达到最大线程数则将继续创建非核心线程如果核心线程数等于最大线程数则当核心线程都处于激活状态时任务将被挂起等待空闲线程来执行。 maximumPoolSize : 最大线程数允许创建的最大线程数量。如果最大线程数等于核心线程数则无法创建非核心线程如果非核心线程处于空闲时超过设置的空闲时间则将被回收释放占用的资源。 keepAliveTime : 也就是当线程空闲时所允许保存的最大时间超过这个时间线程将被释放销毁但只针对于非核心线程。 unit : 时间单位TimeUnit.SECONDS等。 workQueue : 任务队列存储暂时无法执行的任务等待空闲线程来执行任务。 threadFactory : 线程工程用于创建线程。 handler : 当线程边界和队列容量已经达到最大时用于处理阻塞时的程序 2.线程池的类型 2.1 可缓存线程池 ExecutorService cachePool Executors.newCachedThreadPool();看看它的具体创建方式 public static ExecutorService newCachedThreadPool() {return new ThreadPoolExecutor(0, //核心线程数Integer.MAX_VALUE, //线程池大小60L, //空闲保存时间TimeUnit.SECONDS, new SynchronousQueueRunnable() //阻塞队列); }通过它的创建方式可以知道创建的都是非核心线程而且最大线程数为Interge的最大值空闲线程存活时间是1分钟。如果有大量耗时的任务则不适该创建方式。它只适用于生命周期短的任务。 2.2 单线程池 ExecutorService singlePool Executors.newSingleThreadExecutor();顾名思义也就是创建一个核心线程 public static ExecutorService newSingleThreadExecutor() {return new FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1, 1,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueueRunnable()));}只用一个线程来执行任务保证任务按FIFO顺序一个个执行。 2.3 固定线程数线程池 Executors.newFixedThreadPool(3);public static ExecutorService newFixedThreadPool(int nThreads) {return new ThreadPoolExecutor(nThreads, nThreads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueueRunnable()); }也就是创建固定数量的可复用的线程数来执行任务。当线程数达到最大核心线程数则加入队列等待有空闲线程时再执行。 2.4 固定线程数支持定时和周期性任务 ExecutorService scheduledPool Executors.newScheduledThreadPool(5);public ScheduledThreadPoolExecutor(int corePoolSize) {super(corePoolSize, Integer.MAX_VALUE,DEFAULT_KEEPALIVE_MILLIS, MILLISECONDS,new DelayedWorkQueue()); }可用于替代handler.postDelay和Timer定时器等延时和周期性任务。 问题最大线程数量为Integer最大值不就是可以创建很多个空闲线程用来处理任务吗为什么会任务还会被放入工作队列中等待处理       在 ScheduledThreadPoolExecutor 的构造方法中将最大线程数量设置为 Integer.MAX_VALUE。这意味着线程池可以创建非常多的空闲线程来处理任务。然而即使存在大量空闲线程仍然会将任务放入工作队列中等待处理的原因是为了减少线程创建和销毁的开销并且能够更好地控制线程的数量。通过工作队列线程池可以根据任务的到达速率和线程的处理能力来动态调整任务的执行顺序和并发度以保证任务能够按时得到执行。因此虽然 ScheduledThreadPoolExecutor 可以创建大量的空闲线程但为了更好地管理和控制线程数量任务仍然会被放入工作队列中等待处理以实现更高效的任务调度和执行。 public ScheduledFuture? schedule(Runnable command,long delay, TimeUnit unit);public ScheduledFuture? scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit);public ScheduledFuture? scheduleWithFixedDelay(Runnable command,long initialDelay,long delay,TimeUnit unit);scheduleAtFixedRate和sheduleWithFixedDelay有什么不同呢 scheduleAtFixedRate 用于以固定的时间间隔执行任务。它接受一个 Runnable 类型的参数以及两个 long 类型的参数initialDelay初始延迟时间和 period任务执行的时间间隔。该方法会在 initialDelay 时间后开始执行第一次任务然后每隔 period 时间执行一次。如果任务的执行时间超过了指定的时间间隔 period那么下一次任务的执行会立即开始不会等待上一次任务的完成。这意味着任务的执行可能会重叠。 sheduleWithFixedDelay 在任务执行完成后等待 delay 时间后再开始下一次任务的执行。这样可以确保任务之间有固定的时间间隔并且不会重叠执行。 2.5 手动创建线程池 private ExecutorService pool new ThreadPoolExecutor(3, 10,10L, TimeUnit.SECONDS,new LinkedBlockingQueueRunnable(512), Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());可以根据自己的需求创建指定的核心线程数和总线程数。 3. 应用场景 并发任务执行ExecutorService 可以用于执行并发的异步任务通过线程池的方式可以有效地管理和复用线程资源提高任务执行的效率。定时任务调度ExecutorService 可以用于定时执行任务通过调用 schedule() 或 scheduleAtFixedRate() 方法可以实现按照指定的时间间隔或固定频率执行任务的功能。大规模数据处理当需要对大规模数据进行处理时可以将数据分割成多个任务并提交给 ExecutorService 执行以并发的方式对数据进行处理提高处理速度。 4. 代码案例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class ConcurrentTaskExample {public static void main(String[] args) {// 创建固定大小的线程池ExecutorService executorService Executors.newFixedThreadPool(5);// 提交 10 个任务给线程池执行for (int i 0; i 10; i) {int taskId i;executorService.submit(() - {System.out.println(任务 taskId 开始执行);// 模拟任务执行耗时try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(任务 taskId 执行完成);});}// 关闭线程池executorService.shutdown();try {// 等待所有任务完成或超时这里设置超时时间足够大if (!executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS)) {// 如果超时仍有任务未完成则强制关闭线程池executorService.shutdownNow();System.out.println(等待超时强制关闭线程池);}} catch (InterruptedException e) {// 捕获中断异常e.printStackTrace();executorService.shutdownNow();}} }结果任务不是按进来无序完成的任务1耗时并不会阻塞程序对任务2的处理。 5. 注意点 在上面的代码中需要关闭线程池线程池的关闭可以确保线程池中的线程在不再需要时被正确地释放和销毁。不关闭线程池可能在某些情况下工作正常但它可能导致一些潜在问题 资源泄漏 如果不关闭线程池它将一直保持活动状态并且线程池中的线程将继续存在。这会导致资源的浪费特别是在长时间运行的应用程序中。 系统负载 线程池中的线程将占用系统资源包括内存和处理器。如果不关闭线程池这些资源将被持续占用可能导致系统负载增加。 程序退出延迟 如果主程序不关闭线程池并等待线程池中的任务完成那么程序可能会在所有任务完成之前退出。这可能导致任务未执行完全或结果未被处理。所以代码中设置了一个足够大的超时时间确保任务完全执行完。 因此为了避免以上问题建议在不再需要线程池时显式地调用 shutdown() 方法来关闭线程池。这将停止线程池接受新的任务并开始逐渐关闭线程池中的线程直到所有任务都执行完毕。 之前部署过一个SpringBoot项目在云服务器上总是运行一阵子服务器就会宕机内存占满了但是这个项目只有我一个人在用不存在Redis占用过高内存的问题后来排查到是我使用线程池后没有关闭导致了系统资源耗尽。即使线程池的线程数是固定的也会造成资源的消耗。
http://wiki.neutronadmin.com/news/16915/

相关文章:

  • wordpress的vps建站流程网站功能需求分析文档
  • 网站结构分类wordpress动态cdn
  • 免费网站成品湖南手机网站制作公司
  • 石家庄网站建设燕杰做网站配置好了找不到服务器
  • 建设银行网站在哪设置查询密码外贸业务员做网站
  • 大学生做网站兼职免费刷粉网站推广
  • 自己的网站怎么做进销存营销型网站开发推广
  • 男女做暖暖视频网站vue做网站cms
  • 电子商务网站开发怎么设计铜仁做网站的公司
  • 广州网站建设方案淘宝客怎么建设网站
  • 安徽建设工程信息网新网站哪儿登陆内蒙古建设工程交易中心网站
  • 视频网站数据库设计知春路网站建设公司
  • rtt全民互助平台网站开发韩国vs加纳分析比分
  • 陕西做教学成果网站的公司青岛外贸网站推广
  • 建网站做站长网站里的地图定位怎么做
  • 吉安建站公司哪家做网站
  • 学生处网站建设招标公告电视直播网站开发
  • 祁东网站建设制作网站的手机软件
  • 网站宣传与推广的指导思想做视频必须知道的一些网站
  • 寻找郑州网站建设公司永久的海外域名
  • 自己做网站自己做SEOwordpress3.8模板
  • 建设银行湖南省分行官方网站创意网站模板下载
  • 上传的网站打不开企业如何建官方网站
  • 中信建设有限责任公司云南分公司电话齐三seo顾问
  • 做元器件上什么网站怎么做触屏版网站
  • 国税网站模板wordpress外链图片无法显示
  • 哪个网站有手机广告传媒公司名字大全最新
  • 网站图片自动轮换怎么做的平台类网站
  • 企业网站策划大纲模板做网站字体一般设置
  • 什么网站可以自己做配图上海地铁最新公告