笑谈ThreadFactory

全世界让一个人沉默并不比一个人让全世界沉默更具有正当性。——约翰•密尔

眼看你的饭店生意越做越大,又出现了一个头疼的问题——厨师管理问题。福祸相依,你发现有些厨师培训学校的校长开始主动找你喝茶,大家都心知肚明,这是“醉翁之意不在酒”,校长是来推销自己的学生,进而提高学校的就业率。你表面上装出一副为难的样子,心中已有主意。

ThreadFactory就是我们抽象的厨师培训学校,对于厨师的等级,姓名,状态**(Thread的 priority, name ,daemon status…**)等工作全部可以集中在这里处理。

public interface ThreadFactory {/*** Constructs a new {@code Thread}.  Implementations may also initialize* priority, name, daemon status, {@code ThreadGroup}, etc.* 创建新线程,可以在这里设置线程的权限,名称,守护状态的...*/Thread newThread(Runnable r);
}

为了让饭店生意不出现什么意外,还需要指定一个默认厨师培训学校(DefaultThreadFactory)

 /*** The default thread factory* 默认的“厨师培训学校”*/static class DefaultThreadFactory implements ThreadFactory {private static final AtomicInteger poolNumber = new AtomicInteger(1);private final ThreadGroup group;private final AtomicInteger threadNumber = new AtomicInteger(1);private final String namePrefix;DefaultThreadFactory() {/*** 这里的SecurityManager就不展开讨论,有需要的下方评论,看情况出一篇文章* ThreadGroup 顾名思义,代表一个线程集合,是树状结构。*/SecurityManager s = System.getSecurityManager();// getThreadGroup() 创建实例化任何一个线程都会被调用。group = (s != null) ? s.getThreadGroup() :Thread.currentThread().getThreadGroup();namePrefix = "pool-" +poolNumber.getAndIncrement() +"-thread-";}public Thread newThread(Runnable r) {Thread t = new Thread(group, r,namePrefix + threadNumber.getAndIncrement(),0);if (t.isDaemon())t.setDaemon(false);if (t.getPriority() != Thread.NORM_PRIORITY)t.setPriority(Thread.NORM_PRIORITY);return t;}}

到了这里,你突然有点怀疑自己当初的选择(做一只程序猿)…

线程池3rd卷:龙卧浅滩等海潮相关推荐

  1. 线程池6th卷:大展经纶补天手

    聊一聊Doug Lea的生意经 1.第一阶段:Executor 早期创业时候不想那么多,能做生意就行.所以只有一个方法:execute() public interface Executor {voi ...

  2. 线程池2nd卷:虎落平阳被犬欺

    善治病者,必医其受病之处: 善救弊者,必塞其弊之源 书接上文线程池的设计思路,带着如何设计拒绝策略的你,又回顾了整个流程,突然你想这事因排队而起,能不能在排队的队列上有所改进. 第一部分 排队也是值得 ...

  3. linux线程池实现多线程并发,基于Linux的多线程池并发Web服务器设计-电子设计工程.PDF...

    基于Linux的多线程池并发Web服务器设计-电子设计工程.PDF 第 卷 第 期 电子设计工程 年 月 基于 的多线程池并发 服务器设计 陈 涛 任海兰 武汉邮电科学研究院 湖北 武汉 摘要 时至今 ...

  4. [转]javaandroid线程池

    java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一) java多线程同步以及线程间通信详解&消费者生产者模式&死锁 ...

  5. 池化技术及jdk的线程池讲解

    概述 程序运行的本质是消耗系统资源,线程.数据库连接等都会耗费系统的资源.线程.数据库连接等的创建.销毁等都十分消耗系统资源,所以,如果使用池化技术(线程池.数据库连接池等),可以对系统资源进行控制和 ...

  6. python进程池和线程池_python自带的进程池及线程池

    进程池 """ python自带的进程池 """ from multiprocessing import Pool from time im ...

  7. 借鉴美团文章实现的动态线程池,已开源

    大家好, 我是龙台 给自己定了个小目标,hippo4j 年底达到 1k star! GitHub:https://github.com/acmenlt/dynamic-threadpool Site: ...

  8. 线程池踩坑记 --load飙高的原因

    去年处理过一个美图的问题,最近又碰到类似问题了,发现跟美图那个案例原因是一样的,在这里拿出来给大家分享一下. 应该是去年6月底,我们私有化发布了新版本,然后就拿去给美图客户安装部署了,美图的美拍应用访 ...

  9. Java线程池(超详细)

    文章目录 1. 线程池概念 2. JUC线程池架构 3. Executors创建线程的4种方法 4. 线程池的标准创建方式 5. 向线程池提交任务的两种方式 6. 线程池的任务调度流程 7. Thre ...

最新文章

  1. CodeForces 157A Game Outcome
  2. [SpringBoot之Druid]
  3. HDU - 2041 - 超级楼梯(dp)
  4. 【数据结构】B-Tree, B+Tree, B*树介绍
  5. matplotlib 制作不等间距直方图
  6. 全数字实时仿真平台SkyEye和同步数据流语义与翻译正确性验证
  7. qstore 的 chunk重构小记
  8. C++自己实现一个String类
  9. python的金融计算器_Python计算器
  10. GAMBIT、ICEM、HYPERMESH耦合面的处理方法
  11. 冰点还原精灵有什么作用
  12. python如何裁剪图像
  13. hibernate之SessionFactory和Session
  14. PNN模型理论和实践
  15. 《JavaScript 的诞生》
  16. 手机电脑卖不动,AR\VR和自动驾驶也不给力;苹果的未来在哪里?
  17. java数据结构 农夫过河_数据结构笔记分享:18 农夫过河(图的算法运用)
  18. ZX297520V3T:Codec NAU88C22驱动调试
  19. 33种语言的中文名称、本地名称、英文名称
  20. Snort预处理器之`sfPortscan`

热门文章

  1. 爱思华宝收购 Synchronoss 技术公司旗下 Mirapoint 软件业务
  2. shell语法----expr命令
  3. SmokePing 部署实践
  4. 中信国健临床通讯2011年5月期目录
  5. Android仿芝麻信用分
  6. android截图保存在哪,夜神模拟器截图保存在哪-打开夜神模拟器截图保存文件夹的方法 - 河东软件园...
  7. 研究生面试英语口语常见话题
  8. Linux 文件管理 : chattr lsattr 命令详解
  9. textarea换行问题
  10. springboot Cookie设置Secure为true