并发
WCNB
gameNB
展开
-
ThreadLocal
ThreadLocal以自身为可以,内部使用了 ThreadLocalMapThreadLocalMap中使用哈希表存储数据。 private Entry[] table;哈希表存储 ThreadLocalMap(ThreadLocal<?> firstKey, Object firstValue) { ...原创 2020-05-07 15:06:50 · 71 阅读 · 0 评论 -
CopyOnWriteArrayList--ConcurrentSkipListMap--ConcurrentSkipListSet
CopyOnWriteArrayList public void add(int index, E element) { final ReentrantLock lock = this.lock; lock.lock(); try { Object[] elements = getArray(); ...原创 2020-05-07 14:45:25 · 145 阅读 · 0 评论 -
ScheduledThreadPoolExecutor
public void run() { boolean periodic = isPeriodic(); if (!canRunInCurrentRunState(periodic)) cancel(false); else if (!periodic) ...原创 2020-05-07 14:22:58 · 109 阅读 · 0 评论 -
其他
泛型的本质是参数化类型(Parameterized Type)或者参数化多态(ParametricPolymorphism)的应用,即可以将操作的数据类型指定为方法签名中的一种特殊参数,这种参数类型能够用在类、接口和方法的创建中,分别构成泛型类、泛型接口和泛型方法。泛型让程序员能够针对泛化的数据类型编写相同的算法,这极大地增强了编程语言的类型系统及抽象能力。Java内存模型规定了所有的...原创 2020-04-29 16:19:45 · 183 阅读 · 0 评论 -
线程池
线程池带来的好处:降低资源效率---重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度---当任务到达时,不用等待线程的创建立即运行。提高线程的可管理性---可对线程池中进行统一的分配、调优、监控。判断核心线程池的线程是否都在执行任务,不是,则创建一个新的工作线程来执行任务,如果都在,则进入下一流程。 线程池中的工作队列是否已满,没满,则将任务提交到这个工作...原创 2020-04-28 14:45:24 · 90 阅读 · 0 评论 -
并发工具类
CountDownLatch允许一个或多个线程等待其他线程完成操作。只能使用一次join方式原理是while循环不断的去检查join线程是否存活,存活则让当前线程等待,直到join线程中止,线程的this.notifyAll会被调用,而调用是在JVM里实现的。public final synchronized void join(long millis) throws In...原创 2020-04-28 14:45:08 · 78 阅读 · 0 评论 -
Atomic-原子类
原更新基本类型AtomicIntegerAtomicLongAtomicBooleanint addAndGet(int delta):以原子方式将输入的数值与实例中的值(AtomicInteger里的 value)相加,并返回结果。 boolean compareAndSet(int expect,int update):如果输入的数值等于预期值,则以原子方式将该值设...原创 2020-04-28 10:55:34 · 105 阅读 · 0 评论 -
并发容器
ConcurrentHashMap线程安全且高效,并发中使用HashMap可能导致程序死循环,而线程安全的HashTable效率又非常地下,线程不安全的HashMap多线程下,HashMap进行put操作会引起死循环,导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next节点永远不为空,最终产生死循环获取Entry,导致CPU利用率接近100%...原创 2020-04-27 12:18:22 · 94 阅读 · 0 评论 -
并发--锁-AQS
锁是控制多个线程访问共享资源的方式。和synchronized的区别:1.显示地获取和释放锁,拥有对锁的可操作性、可中断的获取锁以及超时获取锁等特性,同时也增加了编程的难度,无法像synchronized隐式地获取释放锁。2.synchrozied隐式的获取和释放锁,但这种方式固化了,必须先获取锁,在释放锁,无法进行扩展。synchronized还不具备的特性:尝试非阻塞地获取锁...原创 2020-04-25 10:08:17 · 169 阅读 · 0 评论 -
线程
操作系统运行一个程序时,会创建一个进程。操作系统调度的最小单元是线程,一个进程里可以创建多个线程,各个线程有着自己的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量,处理器在这些线程上高速切换。更多的处理器核心--利用多线程将计算逻辑分配到多个处理器核心上,显著减少程序的处理时间。 更快的响应时间 更好的编程模型...原创 2020-04-23 19:03:36 · 129 阅读 · 0 评论 -
并发-基础
并发:同一CPU执行多个代码,通过时间片进行频繁的线程上下文切换。并行:多个cpu同时执行多个程序。上下文切换:通过给每个线程分配cpu时间片来实现这个机制,时间极短,看起来像是多个线程同时进行。通过时间片分配算法来循环执行任务,一个线程的时间片执行完后切换下一个线程执行,切换前会保存上一个任务的状态,下次切换到自己后,加载这个任务状态,继续执行。任务保存到再加载的过程就是一个上下文切换。...原创 2020-04-22 11:41:24 · 252 阅读 · 1 评论 -
并发
https://mp.weixin.qq.com/s/V1emalLKHjkxh85Bzo_A1A转载 2020-03-06 10:30:45 · 80 阅读 · 0 评论