当然也有其他待解决方案,比如说coroutine,目前Kotlin已经支持了,JDK也已经有了相关的提案:Project Loom,目前的实现方式和Kotlin有点类似,都是基于ForkJoinPool,当然目前还有很多限制以及问题没解决,比如synchronized还是锁住当前线程等。
面试官问这个,主要想考察 为什么需要线程池?说明:Executors 返回的线程池对象的弊端如下:FixedThreadPool 和 SingleThreadPool: 允许的请求队列长度为 Integer.MAX_VALUE,可能会堆积大量的请求,从而导致 OOM。
Java多线程的实现方式Java程序中,常见有4种方式实现多线程①继承Thread类②实现Runnable接口③实现Callable接口④使用Executor框架在JDK5之前,创建线程有2种方式,一种是继承Thread类,另外一种是实现Runnable接口。
在 Java 中,可以利用线程做很多事情,创建多个线程来高效的完成任务,例如 Tomcat 用多个线程来接收和处理请求,我们也可以创建多个线程来批量处理数据,原本串行执行的任务变成并行执行,充分利用 CPU 多个核的性能。