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

哪个网站可以做兼职钦州网站制作

哪个网站可以做兼职,钦州网站制作,简述网站设计的开发流程,深圳建网站有哪些公司3.3.8 ThreadPoolExecutor的关闭方法 首先查看shutdownNow方法#xff0c;可以从RUNNING状态转变为STOP // shutDownNow方法#xff0c;shutdownNow不会处理阻塞队列的任务#xff0c;将任务全部给你返回了。 public ListRunnable shutdownNow() { // 声明返回结果…3.3.8 ThreadPoolExecutor的关闭方法 首先查看shutdownNow方法可以从RUNNING状态转变为STOP // shutDownNow方法shutdownNow不会处理阻塞队列的任务将任务全部给你返回了。 public ListRunnable shutdownNow() { // 声明返回结果 ListRunnable tasks; // 加锁 final ReentrantLock mainLock this.mainLock; mainLock.lock(); try { // 不关注这个方法…… checkShutdownAccess(); // 将线程池状态修改为STOP advanceRunState(STOP);// 无论怎么直接中断工作线程。 interruptWorkers(); // 将阻塞队列的任务全部扔到List集合中。 tasks drainQueue(); } finally { // 释放锁 mainLock.unlock(); } tryTerminate(); return tasks; } // 将线程池状态修改为STOP private void advanceRunState(int STOP) { // 死循环。 for (;;) { // 获取ctl属性的值 int c ctl.get(); // 第一个判断如果当前线程池状态已经大于等于STOP了不管了告辞。 if (runStateAtLeast(c, STOP) || // 基于CAS将ctl从c修改为STOP状态不修改工作线程个数但是状态变为了STOP // 如果修改成功结束 ctl.compareAndSet(c, ctlOf(STOP, workerCountOf(c)))) break; } } // 无论怎么直接中断工作线程。 private void interruptWorkers() { final ReentrantLock mainLock this.mainLock; mainLock.lock(); try { // 遍历HashSet拿到所有的工作线程直接中断。 for (Worker w : workers) w.interruptIfStarted(); } finally { mainLock.unlock(); } } // 移除阻塞队列内容全部扔到List集合中 private ListRunnable drainQueue() { BlockingQueueRunnable q workQueue; ArrayListRunnable taskList new ArrayListRunnable(); // 阻塞队列自带的直接清空阻塞队列内容扔到List集合 q.drainTo(taskList); // 为了避免任务丢失重新判断是否需要编辑阻塞队列重新扔到List if (!q.isEmpty()) { for (Runnable r : q.toArray(new Runnable[0])) { if (q.remove(r)) taskList.add(r); } } return taskList; } // 查看当前线程池是否可以变为TERMINATED状态 final void tryTerminate() { // 死循环。 for (;;) { // 拿到ctl int c ctl.get(); // 如果是RUNNING直接告辞。 // 如果状态已经大于等于TIDYING马上就要凉凉直接告辞。 // 如果状态是SHUTDOWN但是阻塞队列还有任务直接告辞。 if (isRunning(c) || runStateAtLeast(c, TIDYING) || (runStateOf(c) SHUTDOWN ! workQueue.isEmpty())) return; // 如果还有工作线程 if (workerCountOf(c) ! 0) { // 再次中断工作线程 interruptIdleWorkers(ONLY_ONE); // 告辞等你工作线程全完事我这再尝试进入到TERMINATED状态 return; } // 加锁为了可以执行Condition的释放操作 final ReentrantLock mainLock this.mainLock; mainLock.lock(); try { // 将线程池状态修改为TIDYING状态如果成功继续往下走 if (ctl.compareAndSet(c, ctlOf(TIDYING, 0))) {try { // 这个方法是空的如果你需要在线程池关闭后做一些额外操作这里你可以自行实现 terminated(); } finally { // 最终修改为TERMINATED状态 ctl.set(ctlOf(TERMINATED, 0)); // 线程池提供了一个方法主线程在提交任务到线程池后是可以继续做其他操作的。 // 咱们也可以让主线程提交任务后等待线程池处理完毕再做后续操作 // 这里线程池凉凉后要唤醒哪些调用了awaitTermination方法的线程 termination.signalAll(); } return; } } finally { mainLock.unlock(); } // else retry on failed CAS } } 再次shutdown方法可以从RUNNING状态转变为SHUTDOWN shutdown状态下不会中断正在干活的线程而且会处理阻塞队列中的任务 public void shutdown() { // 加锁。。 final ReentrantLock mainLock this.mainLock;mainLock.lock(); try { // 不看。 checkShutdownAccess(); // 里面是一个死循环将线程池状态修改为SHUTDOWN advanceRunState(SHUTDOWN); // 中断空闲线程 interruptIdleWorkers(); // 说了这个是为了ScheduleThreadPoolExecutor准备的不管 onShutdown(); } finally { mainLock.unlock(); } // 尝试结束线程 tryTerminate(); } // 中断空闲线程 private void interruptIdleWorkers(boolean onlyOne) { // 加锁 final ReentrantLock mainLock this.mainLock; mainLock.lock(); try { for (Worker w : workers) { Thread t w.thread; // 如果线程没有中断那么就去获取Worker的锁基于tryLock可知不会中断正在干活的线程 if (!t.isInterrupted() w.tryLock()) {try { // 会中断空闲线程 t.interrupt(); } catch (SecurityException ignore) { } finally { w.unlock(); } } if (onlyOne) break; } } finally { mainLock.unlock(); } } 3.4 线程池的核心参数设计规则 线程池的使用难度不大难度在于线程池的参数并不好配置。 主要难点在于任务类型无法控制比如任务有CPU密集型还有IO密集型甚至还有混合型的。 因为IO咱们无法直接控制所以很多时间按照一些书上提供的一些方法是无法解决问题的。 《Java并发编程实践》 想调试出一个符合当前任务情况的核心参数最好的方式就是测试。 需要将项目部署到测试环境或者是沙箱环境中结果各种压测得到一个相对符合的参数。 如果每次修改项目都需要重新部署成本太高了。 此时咱们可以实现一个动态监控以及修改线程池的方案。因为线程池的核心参数无非就是 ● corePoolSize核心线程数 ● maximumPoolSize最大线程数 ● workQueue工作队列 线程池中提供了获取核心信息的get方法同时也提供了动态修改核心属性的set方法。 [image] 也可以采用一些开源项目提供的方式去做监控和修改 比如hippo4j就可以对线程池进行监控而且可以和SpringBoot整合。 Github地址https://github.com/opengoofy/hippo4j 官方文档https://hippo4j.cn/docs/user_docs/intro 3.5 线程池处理任务的核心流程 基于addWorker添加工作线程的流程切入到整体处理任务的位置
http://www.pierceye.com/news/129013/

相关文章:

  • 移动网站和定制网站个体户 做网站
  • 网站建设的计划书网站源码下载 用户注册
  • 培训网站项目ppt怎么做抖音服务商
  • 做一个网站需要多少钱大概费用wordpress 2017
  • 惠州网页模板建站天河建设网站外包
  • html变Wordpress网络营销优化培训
  • 上海网站建设hxwlkj新浪网站源代码
  • 网站如何做美工想做代理商去哪找项目
  • 佛山市品牌网站建设多少钱印度网站开发成本
  • 群晖 nas 做网站软件开发视频网站
  • 建设银行云南分行招聘网站wordpress 教程
  • 杭州知名的网站制作策略创建一个购物网站需要什么
  • 新乡网站seo优化vs做的网站怎么让局域网的看到
  • 做静态网站怎样让图片自己切换重庆互联网公司排名
  • 微网站需要什么郑州哪家专业做淘宝网站
  • 郑州机械网站制作seo专业优化公司
  • 专注苏州网站优化长沙有哪些知名网站
  • 成品网站货源1688免费推荐建设银行科技中心网站
  • 城乡建设部统计信息网站大学生创新创业大赛项目计划书
  • 河南省水利建设厅网站清溪镇网站仿做
  • 深圳建设企业网站wordpress安装对搜索引擎
  • 做药物分析网站做网站花钱吗
  • 字体图标制作网站恒一信息深圳网站建设公司1
  • 制作一个自己的网站小白node怎么做网站
  • 手机搭建网站工具教育机构加盟
  • 建设网站的服务端口教育培训类网站建设
  • 济南网站建设 泉诺如何防范钓鱼网站
  • 沈阳网站推广公司西安网站设计师
  • 网站建设费用计入什么二级科目企业门户网站建设的必要性
  • 宁夏水利厅建设管理处网站大连网站制作431