Java并发编程
Java并发编程
在云端821
这个作者很懒,什么都没留下…
展开
-
线程池原理理解
线程池原理理解原创 2022-01-06 15:33:10 · 242 阅读 · 0 评论 -
CountDown原理及使用
CountDown原理及使用CountDown原理及使用CountDown原理及使用CountDown原理及使用.转载 2021-04-01 11:35:50 · 1544 阅读 · 0 评论 -
Java乐观锁CAS实现原理
Java乐观锁CAS实现原理定义JDK提供的CAS支持CAS实现原理CAS应用定义CAS(CompareAndSwap)译为“比较并交换”,CAS操作包含三个操作数:内存位置(V)、期望值(A)和新值(B),如果内存位置的值和期望值匹配,那么处理器会自动将该位置的值更新为新值,否则处理器不做任何操作。JDK提供的CAS支持sun.misc.unsafe类中提供了对CAS操作的支持,CAS实现原理CAS通过调用JNI的代码实现,JNI:Java native interface,运行Java调原创 2020-09-12 15:29:46 · 195 阅读 · 0 评论 -
多线程循环打印ABC
多线程循环打印ABCimport java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ABC_Lock { private static Lock lock = new ReentrantLock();// 通过JDK5中的Lock锁来保证线程的访问的互斥 private static int state = 0;//通过state的值来确定是否打印原创 2020-09-10 15:29:09 · 167 阅读 · 0 评论 -
生产者消费者模型
生产者消费者模型一. Synchronized+wait()+notify()1)生产者2)消费者3)缓存区4)测试二、Lock+await()+signal1)生产者2)消费者3)缓存池4)测试一. Synchronized+wait()+notify()1)生产者class Producer extends Thread{ private Buffer buffer; public Producer(Buffer buffer) { this.buffer = b原创 2020-09-08 19:44:36 · 93 阅读 · 0 评论 -
ThreadLocal:线程本地变量
ThreadLocal:线程本地变量ThreadLocal应用场景ThreadLocal在每个线程Thread内部有一个ThreadLocal.ThreadLocalMap类型的成员变量threadLocals,这个threadLocals就是用来存储实际的变量副本的,键值为当前ThreadLocal变量,value为变量副本(即T类型的变量)。初始时,在Thread里面,threadLocals为空,当通过ThreadLocal变量调用get()方法或者set()方法,就会对Thread类中的thr原创 2020-08-28 21:20:18 · 124 阅读 · 0 评论 -
高并发项目设计
1.设计原则1.正确性保证在项目执行过程中不会出现问题。例如在高并发秒杀系统中,不能出现超卖以及重复下单的问题。2.安全性主要是动态地址生成和接口防刷,双重MD5加密 。第一次加密:防止明文密码在网络中传输;第二次加密:防止数据库被盗时,通过MD5反推出密码。3.高并发采用Redis进行缓存常用查询、消息队列异步下单、页面资源静态化等方面减去数据库压力。4.高可用一方面使用Redis集群的主从复制和主从切换保证redis的高可用性,另一方面,为防止redsi服务器宕机,使..原创 2020-06-16 08:30:18 · 404 阅读 · 0 评论 -
Lock锁的使用
Lock锁的使用转载:http://www.cnblogs.com/dolphin0520/p/3923167.html转载 2020-06-29 20:58:12 · 243 阅读 · 0 评论 -
Java多线程理解
2.多线程的作用发挥多核CPU的优势。**单核CPU上所谓的"多线程"那是假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,看着像多个线程"同时"运行罢了。**现在的计算机都是双核的,4核、8核甚至16核的,如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。多核CPU上的多线程才是真正的多线程,它能让你的多段逻辑同时工作,多线程,可以真正发挥出多核CPU的优势来,达到充分利用CPU的目的。防止阻塞。从程序运行效率的角度来看,单核CPU不但不会发挥原创 2020-06-22 10:10:13 · 152 阅读 · 0 评论 -
Java线程池理解
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(原创 2020-06-21 23:56:09 · 115 阅读 · 0 评论 -
Java线程池
线程池7大参数 corePoolSize:核心池的大小:maximumPoolSize:线程池最大线程数,这个参数也是一个非常重要的参数,它表示在线程池中最多能创建多少个线程;keepAliveTime:空闲的线程保留的时间。TimeUnit:空闲线程的保留时间单位。BlockingQueue<Runnable>:阻塞队列ThreadFactory:线程工厂,用来创建线程RejectedExecutionHandler:队列已满,而且任务量大于最大线程的异常处理策.原创 2020-06-15 18:54:19 · 147 阅读 · 0 评论 -
Java实现线程的几种方法
介绍Oracle上说创建线程分为两类,准确地讲,创建线程只有一种方式,就是通过构造Thread类,而实现线程的执行单元有两种方法方法1:实现Runnable接口的run()方法,并把Runnable实例传给Thread类。方法2 : 重写Thread的run()方法,即继承Thread类。实现Runable接口的run()方法实现步骤:重写run()方法;Thread传进实现类,调用start()方法启动线程。public class CreateThreadDemo2 im原创 2020-06-21 23:46:17 · 176 阅读 · 0 评论 -
Java线程生命周期
一.理解新生态:当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值这个状态属于编程语言特有的,不过这里所谓的被创建,仅仅是在编程语言层面被创建,而在操作系统层面,真正的线程还没有创建。就绪态:当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待调度运行指的是线程可以分...转载 2020-03-25 17:24:14 · 112 阅读 · 0 评论