java并发
文章平均质量分 62
刘岚乔月
软件行业对于我来说不仅仅是工作,更是一种兴趣爱好!
展开
-
乐观所、悲观锁
悲观锁 具有排他性,在读取数据后,会在这条数据上加锁,其他用户是操作不了这条数据的。 一般用于事务较短,并发不大的场景。 乐观锁 其实是一种思想,每次读取数据的时候不会加锁,但是在进行更新操作的时候,需要判断 在次之前数据是否被更改过(可以使用版本号等方法),如果数据已经被更改了则拒绝本次 更新操作,在最新的数据之后进行重试。 例如: 使用自增长的整数表示数据版本号。更新时原创 2018-01-24 22:45:18 · 138 阅读 · 0 评论 -
CountDownLatch
一个概念闭锁 一个闭锁就像一道大门,直到闭锁达到终点状态之前,门一直是关闭的,没有线程可以通过,在到达终点状态时,门是打开的,允许所有线程通过。 CountDownLatch是一种同步工具|是一个灵活的闭锁,允许一个或多个线程等待一个或一组事件的发生。 构造器方法中提供的数值实际上就是闭锁需要等待的线程数量,这个计数器值只能被设置一次,而CountDwonLatch没有提供任何机制去重新设置原创 2018-01-24 22:46:30 · 114 阅读 · 0 评论 -
CyclicBarrier
CyclicBarrier类似于闭锁,它能够阻塞一组线程直到某个事件发生。 它与闭锁主要的区别在于,所有线程必须同时到达一个点,才能继续执行。 闭锁等待的是事件,是等待countDown()执行之后,之前等待的线程才可能继续执行。 栅栏是线程之间相互等待,然后同时到达一个点后在一起执行(可以中断、超时)。 public CyclicBarrier(int parties) {原创 2018-01-24 22:47:11 · 117 阅读 · 0 评论 -
ExecutorCompletionService
ExecutorCompletionService 当你需要使用Executor执行一个批量处理的任务,并且希望有返回值时,可能会使用Future不断的判断是否已经完成。 现在有一个更好的方案就是CompletionService,它整合了Executor和BlockingQueue的功能。 Future submit(Callable task); Future take() throw原创 2018-01-24 22:47:57 · 288 阅读 · 0 评论 -
futureTask
FutureTask可以把它当作是闭锁的一种(FutureTask的实现描述了一个抽象的可携带结果的计算)。 FutureTask的通过Callable实现的(带返回值的Runnable),并且有3个状态:等待、运行和完成。 完成包括:正常结束、取消和异常。一旦FutureTask进入完成状态,它会永远停止在这个状态上。 boolean cancel(boolean mayInterru原创 2018-01-24 22:49:39 · 148 阅读 · 0 评论