您现在的位置是:主页 > news > 深圳福田专业网站推广/网站换了域名怎么查

深圳福田专业网站推广/网站换了域名怎么查

admin2025/4/22 5:12:49news

简介深圳福田专业网站推广,网站换了域名怎么查,做面食视频网站,石家庄有什么做网站的公司多线程--线程池1. 作用2. ThreadPoolExecutor3. 线程池执行的流程4. 创建线程池5. 停止线程池1. 作用 不用每次执行任务时, 都创建线程(会真实穿件系统级别的线程, 比较耗时, 销毁也是), 而是可以使用线程池中的线程来复用 2. ThreadPoolExecutor corePoolSize(线…

深圳福田专业网站推广,网站换了域名怎么查,做面食视频网站,石家庄有什么做网站的公司多线程--线程池1. 作用2. ThreadPoolExecutor3. 线程池执行的流程4. 创建线程池5. 停止线程池1. 作用 不用每次执行任务时, 都创建线程(会真实穿件系统级别的线程, 比较耗时, 销毁也是), 而是可以使用线程池中的线程来复用 2. ThreadPoolExecutor corePoolSize(线…

多线程--线程池

  • 1. 作用
  • 2. ThreadPoolExecutor
  • 3. 线程池执行的流程
  • 4. 创建线程池
  • 5. 停止线程池

1. 作用

不用每次执行任务时, 都创建线程(会真实穿件系统级别的线程, 比较耗时, 销毁也是), 而是可以使用线程池中的线程来复用

2. ThreadPoolExecutor

  • corePoolSize(线程池的基本大小):核心线程数
  • runnableTaskQueue(任务队列):阻塞队列。
    ArrayBlockingQueue:是一个基于数组结构的有界阻塞队列,此队列按FIFO(先进先出)原则对元素进行排序。
    LinkedBlockingQueue:一个基于链表结构的阻塞队列,此队列按FIFO排序元素
    SynchronousQueue:一个不存储元素的阻塞队列。每个插入操作必须等到另一个线程调用移除操作,否则插入操作一直处于阻塞状态。
    PriorityBlockingQueue:一个具有优先级的无限阻塞队列。
  • maximumPoolSize(线程池最大数量):线程池允许创建的最大线程数。
  • keepAliveTime(线程活动保持时间):空闲时间数量,
    所以,如果任务很多,并且每个任务执行的时间比较短,可以调大时间,提高线程的利用率。
  • TimeUnit(线程活动保持时间的单位):空闲时间单位, 天(DAYS)、小时(HOURS)、分钟
    (MINUTES)、毫秒(MILLISECONDS)、微秒(MICROSECONDS,千分之一毫秒)和纳秒
    (NANOSECONDS,千分之一微秒)。
  • RejectedExecutionHandler(饱和策略):当队列和线程池都满了,说明线程池处于饱和状态,表示无法处理新任务时抛出异常。提供了以下4种策略。
    AbortPolicy:直接抛出异常拒绝执行。
    CallerRunsPolicy:提交者,执行。
    DiscardOldestPolicy:丢弃队列里最近的一个任务,并执行当前任务。
    DiscardPolicy:不处理,丢弃掉时间最久的。
        ExecutorService pool = new ThreadPoolExecutor(4,//核心线程数10,//最大线程数60,//空闲时间数量TimeUnit.SECONDS,//空闲时间单位new LinkedBlockingQueue<>(),//阻塞队列new ThreadFactory() {//线程创建的工厂类@Overridepublic Thread newThread(Runnable r) {return new Thread(r);}},//拒绝策略
//                new ThreadPoolExecutor.CallerRunsPolicy()
//                new ThreadPoolExecutor.AbortPolicy()
//                new ThreadPoolExecutor.DiscardPolicy()new ThreadPoolExecutor.DiscardOldestPolicy());pool.execute(new Runnable() {@Overridepublic void run() {System.out.println(1);}});

3. 线程池执行的流程

在这里插入图片描述

4. 创建线程池

public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,RejectedExecutionHandler handler)

5. 停止线程池

可以通过调用线程池的shutdownshutdownNow方法来关闭线程池。它们的原理是遍历线程池中的工作线程,然后逐个调用线程的interrupt方法来中断线程,所以无法响应中断的任务可能永远无法终止。但是它们存在一定的区别。

  • shutDown() : 中断队列中的任务, 工作线程正在执行的任务, 还是会执行完毕才能关闭线程池
  • shutDownNow() : 中断队列中的任务, 及工作线程正在执行的任务