都说 Kotlin协程比线程性能好很多,然而事情的真相真是如此么?
分类:
编程语言 时间:
2020-01-10 18:43:47
阅读次数:
104
java线程中常用的基本方法有wait,notify,notifyAll,sleep,join,yield等。 线程的生命周期一共分为五个部分,分别是:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)。由于cpu需要在多条线程中切换因此线程状 ...
分类:
编程语言 时间:
2020-01-09 15:59:32
阅读次数:
102
什么是线程池?为什么要用线程池? 1、降低资源的消耗。降低线程创建和销毁的资源消耗; 2、提高响应速度:线程的创建时间为T1,执行时间T2,销毁时间T3,免去T1和T3的时间 3、提高线程的可管理性。 实现一个我们自己的线程池 1、 线程必须在池子已经创建好了,并且可以保持住,要有容器保存多个线程; ...
分类:
编程语言 时间:
2020-01-08 22:44:59
阅读次数:
87
实现Callable接口,通过FutureTask包装器来创建线程,线程池 Callable接口可以提供返回值,比如卖票,卖完了以后可以return一个值回来 需要new一个FutureTask<>对象 泛型是返回值类型 然后通过Thread对象启动传入task对象实现Callable接口的线程对象 ...
分类:
编程语言 时间:
2020-01-08 10:51:58
阅读次数:
101
如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。这就是线程池的目的了。线程池为线程生命周期的开销和资源不足问题提供了解决方案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程池主要流程 用户通过submit提交一个任务 ...
分类:
编程语言 时间:
2020-01-06 21:17:28
阅读次数:
92
当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略: AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。 这是线程池默认的拒绝策略,在任务不能再提交的时候,抛出异 ...
分类:
编程语言 时间:
2020-01-04 16:58:58
阅读次数:
234
1 当一个任务通过submit或者execute方法提交到线程池的时候,如果当前池中线程数(包括闲置线程)小于coolPoolSize,则创建一个线程执行该任务。 2 如果当前池中线程数大于等于coolPoolSize,则将该任务加入到等待队列。 3 如果任务不能入队,说明等待队列已满,若当前池中线 ...
分类:
编程语言 时间:
2020-01-04 16:25:54
阅读次数:
112
一、Java线程生命周期与状态切换 这些状态的描述可以总结成下图: NEW 一个刚创建但尚未启动的Java线程实例就是处于 NEW 状态 public class App { public static void main(String[] args) { Thread thread = new T ...
分类:
编程语言 时间:
2019-12-31 01:08:29
阅读次数:
145
工作中用过线程池来进行多线程的操作,但是也仅仅是停留在使用方面,没有深入研究,现在通过源码来仔细研究下java的线程池。关于线程池的优缺点就不研究了,直接通过一个源码来看看java中线程池的原理。 使用ThreadPoolExecutor来创建一个线程池 public class MultipleT ...
分类:
编程语言 时间:
2019-12-28 13:24:37
阅读次数:
86
package com.fgy.demo07; public class RunnableImpl implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getNam ...
分类:
编程语言 时间:
2019-12-27 23:52:27
阅读次数:
131