java并发、多线程相关
主要记录java多线程,并发相关的一些内容。
余生的观澜
记录我的技术之路,始于2014,首次记录2015,再次启航2019-3-3,工作于2021年~
展开
-
java技术栈·定时任务解决方案
背景在java的场景中,往往会遇到定时执行一些任务的场景,我把解决方案分为基于spring技术栈的和原生java技术栈的,定时执行任务很容易实现,但是过程中,需要踩很多坑,比如定时任务阻塞,定时任务执行报异常,定时任务超时等等的运行时情况,需要让定时任务很好的兼容,不能宕机。解决方案定时任务,当需要跟外部资源交互的时候,比如发送socket请求,发送rpc请求,获得数据库链接等等的需要与外部资源交互的时候,一旦触发异常或者是超时,需要有处理策略,保证定时任务,正常运行才可以,不能因为出现异常就崩了,阻原创 2021-12-30 10:18:30 · 1279 阅读 · 0 评论 -
7.同步类容器与并发类容器
文章目录博客概述同步类容器抛出异常代码与容器同步工具并发类容器concurrentMap接口Copy-On-Write容器总结博客概述本篇博客主要是对同步类容器与并发类容器做demo讲解。同步类容器同步类容器是线程安全的,但在某些场景下需要加锁来保护复合操作。复合类操作如:迭代(反复访问元素,遍历完容器中的所有元素),跳转(根据指定的顺序找到当前元素的下一个元素),以及条件运算,这些复合操...原创 2019-03-28 18:31:14 · 175 阅读 · 0 评论 -
13.多线程后续补充
文章目录博客概述细节补充volatile原子类操作模拟CAS算法ConcurrentHashMapCountDownLatch博客概述本博客针对前面12篇论文,在后续的学习与工作中有所补充。细节补充多线程涉及到线程调度,CPU上下文的切换,尽可能利用系统资源。使用不当性能更低。1.5版本之前就是sync关键字没别的了。从1.5版本之后提供了并发包。技巧就多起来了。volatile自己理...原创 2019-04-07 18:41:07 · 153 阅读 · 0 评论 -
12.锁杂谈
文章目录博客概述锁重入锁Reentrantlock锁与等待/通知多ConditionLock和Condition的其他方法和用法读写锁锁的总结博客概述在java多线程中,我们知道可以使用sync关键字实现线程间的同步互斥工作,那么其实还有一个更优秀的机制去完成这个同步互斥工作,他就是lock对象,我主要介绍2种锁,重入锁和读写锁。他们具有比sync关键字更强大的功能。父接口是lock接口。有三...原创 2019-04-06 21:15:38 · 134 阅读 · 0 评论 -
11.并发包-下
文章目录博客概述Concurrent.util常用类Semaphore高并发解决方案应用场景漫谈博客概述在这篇博客里面主要进行并发包的一些工具类的讲解,主要是作用的讲解以及代码演示下篇。Concurrent.util常用类Semaphoreimport java.util.concurrent.ExecutorService; import java.util.concurren...原创 2019-04-06 20:33:01 · 118 阅读 · 0 评论 -
10.并发包-上
文章目录博客概述Concurrent.util常用类CyclicBarricCountDownLatchCyclicBarric与CountDownLatch区别Callable和Future使用博客概述在这篇博客里面主要进行并发包的一些工具类的讲解,主要是作用的讲解以及代码演示。Concurrent.util常用类CyclicBarric假设有这样的一个场景,每个线程代表一个跑步运动员...原创 2019-04-06 20:23:18 · 127 阅读 · 0 评论 -
9.jdk多任务执行框架
文章目录博客概述特定功能的线程池底层代码实现ThreadPoolExecutor演示第四种线程池自定义线程池使用详解构造方法中的队列类型很关键。队列满了之后的jdk的拒绝策略如下:基于有界队列的自定义线程池代码示例主函数Task任务基于无界队列的自定义线程池代码示例丢弃策略详解代码实现实战经验博客概述为了更好的控制多线程,jdk提供了一套线程框架Executor,帮助开发人员有效地进行线程控制...原创 2019-04-06 19:05:53 · 318 阅读 · 0 评论 -
6.单例和threadLocal
文章目录博客概述具体代码threadlocal单例模式饿汉式懒汉式静态内部类双重检查锁博客概述本文对threalocal关键字和单例模式的常规骚操作进行了代码示例,并且进行了一些自己个人角度理解的说明。具体代码threadlocalpublic class ConnThreadLocal { public static ThreadLocal<String> th = n...原创 2019-03-27 22:54:06 · 979 阅读 · 0 评论 -
5.blockingqueue与其模拟实现
文章目录博客概述代码实现jdk原生阻塞队列应用与结果基于wait/notify模拟实现阻塞队列博客概述blockingqueue:顾名思义,首先他是一个队列,并且是支持阻塞的机制,阻塞的放入和得到数据。他有两个典型的方法:put(an object)和take()。put(object):把object加到队列里面,如果此时队列满了,也就是queue里面没有空间了,则调用此方法的线程被阻断。...原创 2019-03-27 11:34:08 · 161 阅读 · 0 评论 -
3.volatile关键字
文章目录博客概述案例与解析RunThreadvolatile的非原子性原子类的使用博客概述本博客介绍可见性关键字volatile的相关技术细节。它的主要作用是在多个线程间可见。案例与解析RunThread在java中,每一个线程都有自己的一块内存工作区,其中存放着所有线程共享的主内存的变量值的拷贝。当线程执行时,他在自己的工作内存中操作这些变量。为了存取一个共享的变量,一个线程通常先获取...原创 2019-03-24 14:22:54 · 117 阅读 · 0 评论 -
8.queue队列
博客概述高性能=非阻塞。阻塞=非高性能。队列queue:先进先出特性。具体实现ConcurrentLinkedQueue原创 2019-03-31 12:08:11 · 384 阅读 · 0 评论 -
2.脏读与sync关键字细节问题
脏读对于对象的同步和异步方法,我们在设计自己程序员的时候,一定要考虑问题的整体性,不然就会出现数据不一致的错误,很经典的错误就是脏读。也就是数据的一致性问题。存在多个线程工作(主线程,子线程),当一个线程(子线程)在设置值的时候,比如这个过程需要2秒,在1s时其他线程进来获取值了。此时就产生了脏读,读取的数据是不正确的。错误现象:因为一个用了同步,一个没用同步,这实际上是一套关联的业务(整体性...原创 2019-03-21 19:27:47 · 457 阅读 · 0 评论 -
4.多线程通信(wait和notify)
文章目录博客概述具体代码与实现面试代码与问题优化代码博客概述本博客通过一个阿里的面试题,进行线程通信之间的讲解。涉及到了obeect对象的wait/notify方法,还有信号量工具类。具体代码与实现面试代码与问题import java.util.ArrayList;import java.util.List;public class ListAdd1 { private ...原创 2019-03-24 23:07:05 · 244 阅读 · 0 评论 -
1.线程基础
文章目录博客概述线程安全概念线程安全案例引入同步锁关键字:synchronized多个线程多个锁博客概述程序开发中一个不可避免的问题就是多线程并发访问,为了这种场景特意准备了一个专栏记录多线程的具体知识与代码。博主写博客的思路不是长篇大论的写文字,而是通过代码去说明问题。通过代码配合注释,去理解某种技术。线程安全概念当多个线程访问某一个类或者方法时,这个类始终都能表现出正确的行为,那么这个...原创 2019-03-21 14:13:07 · 191 阅读 · 0 评论