Java并发
文章平均质量分 97
多线程是老生常谈的问题,看看大师是怎么处理并发问题的
姓chen的大键哥
世界是一台冷漠而荒谬的机器,而我们渐渐被它放弃,成为局外人
展开
-
看看不一样的ConcurrentHashMap
为了解决HashMap线程不安全以及synchronizedMap和HashTable并发效率低下的问题,Doug Lea大师为我们准备了兼具高效和安全的HashMap --> ConcurrentHashMap,本文就来讲讲ConcurrentHashMap是如何做到高效和安全的,由于ConcurrentHashMap在JDK1.7 和JDK1.8的实现不同,本文就分别介绍这两个版本的实现原理原创 2021-05-23 20:45:05 · 1555 阅读 · 16 评论 -
一文解决CopyOnWriteArrayList
ArrayList是常用的Java数据结构,不过在多线程环境下对ArrayList进行并发修改会造成很多意想不到的错误:并发导致数据丢失并发导致插入null并发导致数组越界所以ArrayList不是线程安全的类,在并发环境下需要使用线程安全的ArrayList进行修改操作,线程安全的ArrayList有这些:Vector和CopyOnWriteArrayList官方不推荐使用Vect...原创 2019-08-31 20:58:40 · 729 阅读 · 0 评论 -
一文解决CopyOnWriteArraySet
在上一篇文章中介绍了CopyOnWriteArrayList,既然有线程安全的List,那必定会有线程安全的Set。J.U.C包下存在一个线程安全的Set,它与CopyOnWriteArrayList名称类似,它是CopyOnWriteArraySet,那它是如何保证线程安全的呢,接下来解读一下相关的源码构造函数CopyOnWriteArraySet中有两个构造函数,如下代码所示public...原创 2019-08-31 21:00:40 · 420 阅读 · 0 评论 -
synchronized与ReentrantLock的爱恨情仇
Java并发编程中,经常会遇到数据同步或者并发访问的问题,解决这类问题,可以使用锁来保证多线程并发访问的安全性。Java 提供了两种锁机制来控制多个线程对共享资源的互斥访问,第一个是 JVM 实现的 synchronized,而另一个是 JDK 实现的 ReentrantLock。synchronizedsynchronized可以加在方法上使用,也可以使用synchronized代码块来进行同步同步代码块public void funcation() { synchronized (ob原创 2020-07-02 13:53:51 · 125 阅读 · 0 评论 -
线程池实现?简单了解一下
在计算机中,线程是cpu执行的基本单位,可以通过创建线程来执行不同的任务,多线程的出现使得计算机CPU利用率提高了很多,尤其是当今多核CPU的广泛应用更是需要多线程。但是线程也是系统资源,在一个并发系统中,如果通过使用不断创建线程的方式来执行任务,那这个系统很快会因为创建过多线程导致内存溢出进而使系统崩溃,而且线程创建也是需要消耗不少时间,以这种方式来执行任务,不但不会发挥多线程的优势,还会降低系统响应速度。有没有一种方法能避免以上问题?就跟数据库连接池一样,线程可不可以有对应的线程池来管理线程,答案是有原创 2020-07-02 14:04:00 · 168 阅读 · 0 评论