多线程高并发
多线程高并发
尼古拉斯__赵四
这个作者很懒,什么都没留下…
展开
-
多线程基本概念
目录什么是叫一个进程? 什么叫一个线程?进程 线程如何销毁一个线程请你说说启动线程的三种方式?继承 Thread 类实现 Runnable 接口实现 Callable 接口多线程APIDaemonsleep()yield()interrupted() 中断Executor 的中断操作多线程同步锁、异步锁什么是叫一个进程? 什...原创 2020-03-04 05:42:00 · 124 阅读 · 0 评论 -
Redis五种数据结构及应用场景
StringString结构单值缓存SET key valueGET key对象缓存1)SET user:1 value(json格式数据)2)MSET user:1:name sp user:1:balance 1994MGET user:1:name user:1:balance分布式锁SETNX product:10001 true //返回1代...原创 2020-02-08 14:26:59 · 875 阅读 · 0 评论 -
redis 分布式锁1 redisson
各场景下线程安全的锁一、同步锁:当在一个java虚拟机多个线程操作一个变量的时候就会出现线程安全问题,这个时候就会用到同步锁。二、异步锁:就是多个java 虚拟机或者说是服务器,操作同一个变量是,会出现线程安全问题,使用需要使用异步锁来处理。1)数据库 乐观锁 悲观锁 唯一标示 不推荐使用,容易出现锁表,出现死锁。2)Redis 分布式锁:就是设置一个flag标识,当一个服务...原创 2020-02-04 13:39:20 · 378 阅读 · 0 评论 -
有状态与无状态
1、概念 有状态对象(Stateful Bean):就是有数据存储功能。有状态对象,就是有实例变量的对象,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。eg:Bean类 无状态对象(Stateless Bean):就是一次操作,不能保存数据。无状态对象,就是没有实例变量的对象.不能保存数据,是不变类,是线程安全的。衡量一个方法是否是无状态的,就看它...原创 2019-12-04 16:35:27 · 149 阅读 · 0 评论 -
并发-乐观锁、悲观锁
CASCAS原理CAS:Compare and Swap(Compare and Swap 比较并交换)是乐观锁技术。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这个类通过JNI调用CPU底层指...原创 2020-01-03 16:39:20 · 149 阅读 · 0 评论 -
redis 锁 - stringRedisTemplate
public void add(SubjectSettingAddReq req) { // 获取 最新 sort boolean lock = false; try{ // 获取锁 lock = stringRedisTemplate.opsForValue().setIfAbsent(KEY, LOCK); ...原创 2019-10-29 17:57:24 · 753 阅读 · 0 评论 -
并发-JAVA锁 分类
1.线程要不要锁住同步资源?锁住--悲观锁不锁住--乐观锁2.锁住同步资源如果失败,线程要不要阻塞?阻塞不阻塞--自旋锁,适应性自旋锁3.多个线程竞争同步资源的流程细节上的区别?不锁住资源,多个线程中只有一个能够修改资源成功,其它线程会去重试--无锁同一个线程执行同步资源时自动获取资源--偏向锁多个线程竞争同步资源的时候,没有获取资源的线程通过自旋等待锁释放-...原创 2019-12-27 19:48:48 · 126 阅读 · 0 评论 -
SimpleDateFormat安全的时间格式化
转载地址: https://www.cnblogs.com/peida/archive/2013/05/31/3070790.html想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDate...转载 2019-09-16 16:44:21 · 857 阅读 · 0 评论 -
多线程的创建、运行
1.0 有哪些方法创建线程new Thread(); 的方式// 继承 Thread 、实现 Runable接口、实现 Callable<V> 接口 都不是创建线程方式 而是 运行 线程的方式// 都是 重写 run() 方法1.1 Java 提供了三种运行线程的方式:通过实现 Runnable 接口; 通过继承 Thread 类本身; 通过 Callable ...原创 2019-09-09 19:16:33 · 183 阅读 · 0 评论 -
Redis持久化
什么是持久化? 将数据(如内存中的对象)保存到可永久保存的存储设备中。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、 XML 数据文件中等等。从应用层与系统层理解持久化应用层:如果关闭(Close)你的应用然后重新启动则先前的数据依然存在。系统层:如果关闭(Shutdown)你的系统(电脑)然后重新启动则先前的数据依然存在。...原创 2019-08-31 17:21:05 · 139 阅读 · 0 评论 -
CountDownLatch
1.CountDownLatch是什么? CountDownLatch是可以用来协调多个线程之间的同步,或者说起到线程之间的通信作用的工具类。它能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成了任务,然后在CountDownLat...原创 2019-08-25 17:57:28 · 189 阅读 · 0 评论