CAS和AtomicInteger AtomicInteger用来保证自增原子性,它的实现是基于CAS(比较和交换)的。 CAS(CompareAndSwap):判断内存某个位置的值是否与预期值一致,如果是则更改为新值,这个过程是原子的。不会造成数据不一致的问题。 compareAndSet(exc ...
分类:
其他好文 时间:
2020-05-31 16:17:58
阅读次数:
81
简单的线程池,体现线程的复用 不使用Executors.newFixedThreadPool(int)、Executors.newSingleThreadExecutor()、Executors.newCachedThreadPool(),而是通过ThreadPoolExecutor的7个参数的构造 ...
分类:
编程语言 时间:
2020-05-31 12:58:37
阅读次数:
51
定义 package java.util.concurrent; public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { /*/ } JUC 中的 ...
分类:
编程语言 时间:
2020-05-30 01:02:37
阅读次数:
58
死锁的概念 两个或两个以上的进程在执行过程中,因抢夺资源而造成的一种互相等待的现象,若无外力干涉,它们都无法继续推进,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。 实现死锁 1 class HoldLockThread implemen ...
分类:
其他好文 时间:
2020-05-28 19:46:01
阅读次数:
54
线程池,既然是个池子里面肯定就装很多线程。 如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁 线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求创建新线程和销毁线 程上花费的时间和消耗的系统资源要比处理实际的用户请求的时间和资源更多。因此Java中提供线程池对 ...
分类:
编程语言 时间:
2020-05-24 19:32:47
阅读次数:
63
前言: JUC中提供了很多同步工具类,比如CountDownLatch、CyclicBarrier、Semaphore等,都可以作用同步手段来实现多线程之间的同步效果 一、CountDownLatch 1.1、CountDownLatch的使用 CountDownLatch可以理解为是同步计数器,作 ...
分类:
Web程序 时间:
2020-05-24 09:26:28
阅读次数:
63
1、什么是JUC JUC大家可能听说过,它实际上 Java 提供的用于并发处理的工具包。如官方文档所示: 回顾以前 在以前的业务中,我们使用的代码: 1、Thread 2、Runnable:没有返回值、无法抛出异常、效率相比 Callable 较低! 3、Callable 4、还有Locked锁 这 ...
分类:
编程语言 时间:
2020-05-23 18:20:08
阅读次数:
51
在使用Lock之前,我们使用的最多的同步方式应该是synchronized关键字来实现同步方式了。配合Object的wait()、notify()系列方法可以实现等待/通知模式。 Condition接口也提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式,但是这两者在使用方式以 ...
分类:
其他好文 时间:
2020-05-22 19:27:49
阅读次数:
58
前言 ReentrantLock是JUC提供的可重入锁的实现,用法上几乎等同于Synchronized,但是ReentrantLock在功能的丰富性上要比Synchronized要强大。 一、ReentrantLock的使用 ReentrantLock实现了JUC中的Lock接口,Lock接口定义了 ...
分类:
编程语言 时间:
2020-05-21 00:08:55
阅读次数:
59
AQS:AbstractQuenedSynchronizer抽象的队列式同步器,这个类在java.util.concurrent.locks包下,是JAVA除了自带的synchronized关键字之外的锁机制实现。AQS中维护了一个 volatile int state 变量(代表共享资源)和一个C ...
分类:
其他好文 时间:
2020-05-08 18:04:00
阅读次数:
63