(多)线程
介绍高并发开发相关API、使用技巧
yyqhwr
这个作者很懒,什么都没留下…
展开
-
java乐观锁之CAS原理解析
目录含义原理分析CPU原语CAS缺陷ABA问题循环时间长开销大只能对单个共享变量保证原子性操作含义CAS(CompareAndSwap) 即比较并替换,实现并发算法时常用到的一种技术。CAS操作包含三个操作数——内存位置、预期原值及新值。执行CAS操作的时候,将内存位置的值与预期原值比较,如果相匹配,那么处理器会自动将该位置值更新为新值,否则,处理器不做任何操作。乐观锁的含义就是假设没有发生冲突,那么我正好可以进行某项操作,如果要是发生冲突呢,那我就重试直到成功,乐观锁最常见的就是CAS。无论是R原创 2020-06-26 09:36:52 · 304 阅读 · 0 评论 -
浅析乐观锁与悲观锁
目录1. 定义2. 应用场景3. 悲观锁的劣势4. 乐观锁1. 定义悲观锁:总是假设最坏的情况,每次去拿数据(读数据)的时候都认为别人会修改,所以每次在拿数据(读数据)的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。乐观锁:顾名思义,就是很乐观,每次去拿数据(读数据)的时候都认为别人不会修改,所以不会上锁,但是在更新的时候(修改数据)会判断一下在此期间别人有没有去更新这个数据。2. 应用场景悲观锁传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都原创 2020-06-26 07:28:02 · 212 阅读 · 1 评论 -
秒杀系统之超买问题详解
1.场景假设现在库存只有一个商品了,多线程下如何保证最后库存是0而不是负数2. 方法MySQL中的排他锁update goods set num = num - 1 WHERE id = 1001 and num > 0排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改。就是类似于我在执行update操作的时候,这一行是一个事务(默原创 2020-06-25 18:05:27 · 847 阅读 · 0 评论 -
线程之我见(一)
目录概念线程状态NEW(初始状态)定义实例RUNNABLE (就绪、执行中状态)定义实例BLOCKED(阻塞状态)定义实例概念是操作系统能够进行运算调度的最小单位。是进程中的实际运作单位。是系统分配处理器时间资源的基本单元,即程序执行的最小单位 顺便介绍下进程进程是在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程是资源分配的最小单位进程可以包含多个线程线程状态java线程状态定义在java.lang.Thread.State枚举类中;分别是NEW(初始状态)原创 2020-06-15 20:41:20 · 75 阅读 · 0 评论 -
JAVA开启线程的三种方式
目录继承Thread类实现Runnable接口通过Callable和Future创建对象继承Thread类定义Thread类的子类,并重写run()方法 创建该子类的实例,即创建了线程对象 调用线程对象的start()方法类启动该线程 package com.cn.thread;/** * 1.定义Thread类的子类,并重写run()方法 */public...原创 2019-06-27 16:19:53 · 3167 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
原文链接:https://www.cnblogs.com/dolphin0520/p/3949310.htmlJava并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果...转载 2019-06-27 16:32:00 · 97 阅读 · 0 评论 -
ConcurrentHashMap解析
https://www.cnblogs.com/ITtangtang/p/3948786.html java.util.concurrent(j.u.c)源码阅读转载 2018-10-25 14:21:54 · 77 阅读 · 0 评论