多线程
shahuhubao
这个作者很懒,什么都没留下…
展开
-
线程池
线程池的优势:1.降低资源消耗,通过重复利用已创建的线程降低线程的创建和销毁造成的消耗2.提高响应速度,当任务到达时,任务可以不需要等线程创建就能立即执行,线程已经创建好了,等待执行3.提高线程的可管理性,使用线程池可以统一的调优、分配、和监控线程原理:当任务到来时,把任务给线程池,由线程池去调度线程执行任务提交线程任务既可以用execute()又可以用submit()方法。下面创建一个线程池当队...原创 2018-07-11 11:07:56 · 158 阅读 · 0 评论 -
线程池的几种状态
线程池的5种状态:Running、ShutDown、Stop、Tidying、Terminated。1、RUNNING(1) 状态说明:线程池处在RUNNING状态时,能够接收新任务,以及对已添加的任务进行处理。 (02) 状态切换:线程池的初始化状态是RUNNING。换句话说,线程池被一旦被创建,就处于RUNNING状态,并且线程池中的任务数为0!private final AtomicInte...转载 2018-07-11 11:08:24 · 15861 阅读 · 2 评论 -
Executor框架
Executor是最顶层的接口Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周...原创 2018-07-11 11:08:14 · 151 阅读 · 0 评论 -
Future、Callable
Java多线程编程中,经常使用的Thread的Runnable()虽然被经常使用,但其有一个弊端,就是因为无法直接获取该线程的返回值,因为Runnable内的run方法,被定义为void类型,如果开发者需要在线程中处理耗时操作并获得结果,那么必须自己实现一套结果获取的途径,这其实增加了开发者的代码工作量,也可能会因为对线程的不熟悉,造成不必要的代码错误(线程的同步等等问题)。可是,绝大多情况跑完J...原创 2018-07-11 11:08:03 · 90 阅读 · 0 评论 -
锁
乐观锁:它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自的那部分数据。在提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事务又修改了该数据。如果其他事务有更新的话,正在提交的事务会进行回滚。数据版本,为数据增加的一个版本标识。当读取数据时,将版本标识的值一同读出,数据每更新一次,同时对版本标识进行更新。当我们提交更新的时候,判断数据库...原创 2018-08-14 17:11:24 · 137 阅读 · 0 评论