![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程
文章平均质量分 89
小舟~
这个作者很懒,什么都没留下…
展开
-
synchronized和volatile相关知识
本文介绍Synchronize和Volatile关键字相关知识 在多线程环境下,线程是交替执行的,多线程竞争共享资源容易产生线程不安全的问题,甚至产生死锁的问题。 使用多线程,一定要保证程序是线程安全的。通常会采用以下一些方法来保证线程安全: 多线程之间没有共享变量,即考虑使用线程私有变量 加锁 CAS Synchronized Synchronized是Java的关键字,它可以将代码块锁起来。 public void synchronized lock(){ //do something .原创 2021-07-26 14:31:42 · 103 阅读 · 0 评论 -
阻塞队列BlockingQueue
本文介绍BlockingQueue阻塞队列相关知识 简介 BlockingQueue是JUC包下的一个接口,通常用于一个线程生产对象,而另外一个线程消费这些对象的场景。 方法: BlockingQueue继承Queue接口,因此,对数据元素的基本操作有: 插入元素 add(E e) :往队列插入数据,当队列满时,插入元素时会抛出IllegalStateException异常; offer(E e):当往队列插入数据时,插入成功返回true,否则则返回false。 删除元素 remove(.原创 2021-04-18 01:13:25 · 162 阅读 · 0 评论 -
线程通信工具类
本文介绍一些Java线程常用通信工具类,主要介绍怎么使用。 简介 常见的线程间通信方法有: wait()和notify() +加锁机制synchronized和lock 还有线程的join()方法 Condition接口的awiat() 和 signAll()方法 + 加锁机制synchronized和lock 生产者消费者模式 这里介绍一些JDK中java.util.concurrent包下的一些通信工具类。 类 作用 Semaphore 限制线程的数量 Exchanger 两.原创 2021-03-12 15:46:34 · 198 阅读 · 0 评论 -
深入了解ReentrantReadWriteLock
本文分析JDK1.8中的ReetrantReadWriteLock类 简介 由于ReentrantLock是独占锁,某时只有一个线程可以获取该锁,而实际中会有写少读多的场景,所以ReetrantReadWriteLock应运而生,采用读写分离的策略,允许多个线程同时获取该锁。 ReetrantReadWriteLock即可重入读写锁,内部维护一个ReadLock和一个WriteLock,他们依赖Sync来实现,而Sync继承AbstractQueuedSynchronizer,并且也提供了公平和非公平的.原创 2021-03-10 18:35:58 · 332 阅读 · 0 评论 -
Java并发编程的基础知识
本篇介绍Java并发的基础知识,主要包括线程安全,共享变量的内存可见性,synchronized和volatile关键字,指令重排序,伪共享等相关知识。 并发与并行 并发是指同一时间段内多个任务执行。 并行是指同一时刻,多个任务同时执行。 并发是单位时间内,一个CPU切换时间片对多个任务进行处理 并行是同一时刻,多个CPU对多个任务同时进行处理 线程安全 共享资源:该资源被多个线程所持有。 线程安全问题是指当多线程同时读写一个共享资源并且没有任何同步措施时,导致出现脏数据或者其他不可预见的结果的问题.原创 2021-03-08 11:42:07 · 94 阅读 · 0 评论 -
深入了解ThreadLocal
本文分析ThreadLocal的原理和使用 1.ThreadLocal简介 多线程访问共享变量时容易出现并发问题,为了保证线程安全,一般会给共享变量进行适当的加锁同步。如果不想加锁呢? ThreadLocal可以做到线程隔离,多个线程访问共享变量时,访问的是自己线程的变量。 ThreadLocal提供了线程本地变量,如果创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地副本,当多线程操作这个变量时,实际操作的是自己本地内存的变量,从而避免线程安全的问题。 2.Thr.原创 2021-03-04 14:13:42 · 112 阅读 · 1 评论