Java
文章平均质量分 79
GodTheTang
做一个爱程序的程序员
展开
-
一文了解线程池
线程池七大参数ThreadPoolExecutor 3 个最重要的参数: corePoolSize :核心线程数,线程数定义了最小可以同时运行的线程数量。 maximumPoolSize :线程池中允许存在的工作线程的最大数量 workQueue:一个阻塞队列,当新任务来的时候会先判断当前运行的线程数量是否达到核心线程数,如果达到的话,任务就会被存放在队列中。 ThreadPoolExecutor其他常见参数: keepAliveTime:线程存活时间,线程池原创 2021-11-26 16:57:43 · 161 阅读 · 0 评论 -
高并发下接口幂等性解决方案
转载:高并发下接口幂等性解决方案_Gandoph的博客-CSDN博客_接口幂等性解决方案一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果;2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问...原创 2021-11-22 21:49:56 · 101 阅读 · 0 评论 -
【实例详解】创建线程的四种方式
创建线程有四种方式: 继承 Thread 类; 实现 Runnable 接口; 实现 Callable 接口; 使用 Executors 工具类创建线程池 1、继承 Thread 类步骤 定义一个Thread类的子类,重写run方法,将相关逻辑实现,run()方法就是线程要执行的业务逻辑方法 创建自定义的线程子类对象 调用子类实例的star()方法来启动线程 public class MyThread extends T原创 2021-11-22 19:15:01 · 478 阅读 · 0 评论 -
volatile如何保证可见性
Java语言规范第3版中对volatile的定义如下:Java编程语言允许线程访问共享变量,为了 确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言 提供了volatile,在某些情况下比锁要更加方便。如果一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的。在了解volatile实现原理之前,我们先来看下与其实现原理相关的CPU术语与说明volatile是如何来保证可见性的呢?在X86处理器下通过工具..原创 2021-11-15 18:37:57 · 368 阅读 · 0 评论