蚂蚁花呗一面(一个小时):JDK中有哪几个线程池?顺带把线程池讲了个遍Java容器有哪些?哪些是同步容器,哪些是并发容器?ArrayList和LinkedList的插入和访问的时间复杂度?java反射原理,注解原理?JDK中有哪几个线程池?顺带把线程池讲了个遍TCP和UDP的区别?TCP数据传输过程中怎么做到可靠的?说说一致性Hash原理新生代分为几个区?使用什么算法进行垃圾回收?为什么使用这个算
分类:
数据库 时间:
2019-12-05 21:55:52
阅读次数:
130
线程池合理的线程数你是如何考虑的?: 1.先看下机器的CPU核数,然后在设定具体参数: System.out.println(Runtime.getRuntime().availableProcessors()); 即CPU核数 = Runtime.getRuntime().availablePro ...
分类:
编程语言 时间:
2019-12-05 14:45:00
阅读次数:
917
前面文章写了几篇线程池,这次我们来聊聊 Tomcat 线程池 ...
分类:
编程语言 时间:
2019-12-05 13:08:00
阅读次数:
102
reactor正在吞噬世界,唯独Java这边就好像什么也没发生一样。仍然有很多Javaer对异步的理解停留在“发起一个http请求然后等服务回调我”,或者“把IO阻塞的操作放到另外一个线程中去”。不仅如此,在Java及其相关技术的roadmap上异步也从来不是一个显要的话题。当然这也不奇怪,首先异步 ...
分类:
编程语言 时间:
2019-12-05 01:11:17
阅读次数:
151
前言 "上文" 我们介绍了JDK中的线程池框架 。我们知道,只要需要创建线程的情况下,即使是在单线程模式下,我们也要尽量使用 。即: 但是,在 "《阿里巴巴Java开发手册》" 中有一条 【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这 ...
分类:
编程语言 时间:
2019-12-03 23:33:33
阅读次数:
117
在开发中,一些异步操作会明显加快执行速度带来更好的体验,但同时也增加了开发的复杂度,想了用好多线程,就必须从这些方面去了解 线程的 方法 线程异步返回 类 线程池 同步工具类 ,`CyclicBarrier Semaphore Phaser Exchanger` 估计上面每一个对于 2~3 年的 j ...
分类:
其他好文 时间:
2019-12-03 23:24:06
阅读次数:
97
什么是线程池? 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效 ...
分类:
编程语言 时间:
2019-12-03 20:10:27
阅读次数:
79
1 为何要适用线程池 首先我们知道线程对于操作系统来说是一种 珍贵的资源 ,像我们如果每次使用到的时候手动创建,线程执行完run()方法后又自动关闭,下次用的时候还得手动创建,这样无论对于操作系统还是我们来说都是一种 时间 和 资源 的浪费,所以我们可以选择维护一些线程,这些线程在执行完任务之后继续 ...
分类:
编程语言 时间:
2019-12-02 23:16:17
阅读次数:
98
前言
Tomcat/Jetty 是目前比较流行的 Web 容器,两者接受请求之后都会转交给线程池处理,这样可以有效提高处理的能力与并发度。JDK 提高完整线程池实现,但是 Tomcat/Jetty 都没有直接使用。Jetty 采用自研方案,内部实现 QueuedThreadPool 线程池组件,而 Tomcat 采用扩展方案,踩在 JDK 线程池的肩膀上,扩展 JDK 原生线程池。
JDK 原生线程池可以说功能比较完善,使用也比较简单,那为何 Tomcat/Jetty 却不选择这个方案,反而自己去动手实现那?
JDK 线程池
通常我们可以将执行的任务分为两类:
cpu 密集型任务
io 密集型任务
cpu 密集型任务,需要线程长时间进行的复杂的运算,这种类型的任务需要少创建线程,过多的线程将会频繁引起上文切换,降低任务处理处理速度。
而 io 密集型任务,由于线程并不是一直在运行,可能大部分时间在等待 IO 读取/写入数据,增加线程数量可以提高并发度,尽可能多处理任务。
分类:
编程语言 时间:
2019-12-02 19:33:01
阅读次数:
111
Netty工作原理图 netty抽象出了两组线程池,BossGroup专门负责客户端 的连接,WorkerGroup专门负责网络读写。 BossGroup和WorkerGroup 类型都是NioEventLoopGroup NioEventLoopGroup相当于一个事件循环组,这个组中含有多个事件 ...
分类:
Web程序 时间:
2019-12-02 00:43:59
阅读次数:
92