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

包头教育平台网站建设注册查询网站

包头教育平台网站建设,注册查询网站,海口今天最新通知,做网站需要接口么设计线程池 这种设计类问题还是一样#xff0c;先说下理解#xff0c;表明你是知道这个东西的用处和原理的#xff0c;然后开始 阐述。基本上就是按照现有的设计来说#xff0c;再添加一些个人见解。 我个人觉得如果要设计一个线程池的话得考虑 池内工作线程的管理、任务编…设计线程池 这种设计类问题还是一样先说下理解表明你是知道这个东西的用处和原理的然后开始 阐述。基本上就是按照现有的设计来说再添加一些个人见解。 我个人觉得如果要设计一个线程池的话得考虑 池内工作线程的管理、任务编排执行、线程池超负荷处理方案、监控。 初始化线程数、核心线程数、最大线程池都暴露出来可配置包括超过核心线程数的线程空闲消亡配置。 任务的存储结构可配置可以是无界队列也可以是有界队列也可以根据配置分多个队列来分配不同优先级的任务也可以采用 工作窃取stealing 的机制来提高线程的利用率。 也可根据任务的性质选择合适的执行策略 I/O密集型任务通常需要更多的线程来充分利用等待时间可以适当增加线程池大小。CPU密集型任务应避免过多线程竞争CPU资源线程池大小建议设为CPU核心数加1。 当线程池和队列都满载时应定义合理的拒绝策略丢弃任务拒绝任务并抛出异常丢弃最旧的任务自定义策略等 实现细节 线程工厂使用自定义的ThreadFactory来创建线程可以设置线程名称、优先级等属性。任务提交接口提供submit方法允许提交Runnable或Callable任务。任务执行接口内部实现runWorker方法从队列中取出任务并执行。线程回收机制当线程空闲时间超过keepAliveTime时非核心线程会被自动回收。动态调整允许运行时调整线程池参数如核心线程数、最大线程数等。 注意不需要跟面试官解释什么叫核心线程数之类的都懂的没必要。简单的线程池实现示例如下 import java.util.concurrent.*; import java.util.*; public class CustomThreadPoolExecutor extends ThreadPoolExecutor {private final AtomicLong rejectedTasks new AtomicLong(0); //记录被拒绝的任务数量private final AtomicLong completedTasks new AtomicLong(0); //记录已完成的任务数量// 核心线程数 最大线程数 空闲线程的存活时间 存活时间的时间单位 任务队列public CustomThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,BlockingQueueRunnable workQueue) {super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);}Override protected void beforeExecute(Thread t, Runnable r) { //在任务执行前调用可以用于做一些准备工作super.beforeExecute(t, r);}Overrideprotected void afterExecute(Runnable r, Throwable t) { //在任务执行后调用super.afterExecute(r, t);completedTasks.incrementAndGet();}Overrideprotected void terminated() { //在线程池关闭后调用可以用于做一些最终的清理工作super.terminated();}Overrideprotected T RunnableFutureT newTaskFor(Runnable runnable, T value) {return super.newTaskFor(runnable, value);}Overrideprotected T RunnableFutureT newTaskFor(CallableT callable) { //用于创建任务的包装对象return super.newTaskFor(callable); }//任务被拒绝时调用增加了被拒绝任务的计数并调用拒绝策略处理任务Overrideprotected void onRejection(Runnable r, RejectedExecutionHandler handler) {rejectedTasks.incrementAndGet();handler.rejectedExecution(r, this);}public long getCompletedTasks() { //返回已完成的任务数量return completedTasks.get();}public long getRejectedTasks() { //返回被拒绝的任务数量return rejectedTasks.get();} }public class ThreadPoolExample {public static void main(String[] args) {// 配置线程池参数int corePoolSize 4;int maximumPoolSize 10;long keepAliveTime 60L;TimeUnit unit TimeUnit.SECONDS;BlockingQueueRunnable workQueue new LinkedBlockingQueue(100);// 创建自定义线程池CustomThreadPoolExecutor executor new CustomThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);// 提交任务for (int i 0; i 200; i) {executor.submit(() - {System.out.println(Executing task by Thread.currentThread().getName());try {Thread.sleep(1000); // 模拟任务执行时间} catch (InterruptedException e) {Thread.currentThread().interrupt();}});}// 关闭线程池executor.shutdown();try {if (!executor.awaitTermination(60, TimeUnit.SECONDS)) {executor.shutdownNow();}} catch (InterruptedException ex) {executor.shutdownNow();Thread.currentThread().interrupt();}// 输出监控信息System.out.println(Completed tasks: executor.getCompletedTasks());System.out.println(Rejected tasks: executor.getRejectedTasks());} }
http://www.dnsts.com.cn/news/201308.html

相关文章:

  • 用个人的信息备案网站公司手机app开发公司
  • 网站设计的思想wordpress calendar
  • 怎样可以提升自己的网站网站 图标 素材
  • 安徽建设厅网站怎么打不开西安易扬众和网站建设
  • 国际快递网站建设网站开发需要学多久
  • 番禺区seo优化技术培训
  • 外贸网站推广中山郴州吧
  • 网站上放的动画视频是怎么做的沧州南皮手机网站建设
  • 博客式笑话网站织梦源码手机的page怎么转wordpress
  • 低价网站建设怎么样陕西营销型手机网站建设
  • 邮箱域名可以做网站吗中国机加工网
  • 东莞做门户网站成品网源码7w8w
  • 有专门做预算的网站没怎么查询网站的空间商
  • 优秀的摄影作品网站做网站国内阿里云虚拟主机多少钱
  • 潍坊建设网站多少钱网站开发的需求分析
  • 网站自动识别手机代码网站备案的是空间还是域名
  • 网站建设网上商城管理系统考生端重置密码
  • 顺德公益网站制作科学做视频网站
  • 服装网站设计策划wordpress主题 制作教程
  • 网站开发成本会计科目网站建设实习业务介绍
  • 黑龙江省建设网站首页wordpress 获取头像地址
  • 如何选择网站域名建一个门户网站要多少钱
  • 网站开发与制作工资上海闵行区邮编
  • 汉中市网站建设公司常州城乡建设局网站
  • 个人建网站要花多少钱深圳平面设计招聘
  • 番禺网站Wordpress的htaccess在哪
  • 深圳网站建设效果常熟市住房和城乡建设局网站
  • 河南手机网站建设公司排名53货源网下载app
  • 交网站建设 域名计入什么科目北京企业建站
  • 网站推广应该注意什么京东关键词优化技巧