/** * ---------------------------------------------------- * 使用AtomicInteger实现 * 实际上Atomic类比volatile更进一步提供了++等原子操作和CAS(乐观锁)操作 * ---------------------------------------------------- */class AtomicSema implements

可以定义一系列对象

private static Object[] lockObj = new Object[lockLength];

然后tradeid取余lockLength,再加锁

synchronized(lockObj[tradeid%locklength]){

}

并发量再往上走有没有更好的处理办法?/* * ---------------------------------------------------- * 使用LockSupport来实现 * 使用park,unpark实现基本线程控制方法, 更底层 * 没有必要的话,不要用这样的方式来控制线程,这里仅是做个试验 * -----------------------------------------------,

抢单是类似滴滴的抢单,还是类似电商的秒杀,抢购。

如果是类似滴滴的抢单的话,没必要这么复杂,直接使用lock,或者只有一个余量的信号量也行,因为不会有太多并发请求同一个订单,直接使用lock就可以解决这个问题。

如果是类似电商的秒杀、抢购的话,异步队列是个很好地方式,网上这方面资料也很多。,

这个策略在有锁的场景下是最优的了,再往上可以使用无锁的方式。这里需要强调下,无锁和无状态是一起使用的,最关键是

synchronized(lockObj[tradeid%locklength]){

}

这个同步块中的代码怎么写的,这会牵扯到一系列架构上的调整,没有一个银弹的具体做法。

java 并发抢单_java如何实现高并发下的抢单?相关推荐

  1. java接口并发衡量_java 后端设计高并发接口总结

    如何设置高并发接口 一.并发队列的选择 二.请求接口的合理设计 三.高并发下的数据安全 3.1 超发的原因 3.2 悲观锁思路 3.3 FIFO队列思路 3.4 乐观锁思路 一.并发队列的选择 Jav ...

  2. java 并发统计_java并发编程|CountDownLatch计数器

    0x01,CountDownLatch介绍 CountDownLatch是一个计数器,作为java并发编程中三个组件之一,这个组件的使用频率还是很多的.这里分享下自己画的java并发编程组件的图,后面 ...

  3. java 并发 面试_Java 并发基础常见面试题总结

    1. 什么是线程和进程? 1.1. 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的.系统运行一个程序即是一个进程从创建,运行到消亡的过程. 在 Java 中,当我们启 ...

  4. futuretask java 并发请求_Java面试题整理一(侧重多线程并发)

    1..是否可以在static环境中访问非static变量? 答:static变量在Java中是属于类的,它在所有的实例中的值是一样的.当类被Java虚拟机载入的时候,会对static变量进行初始化.如 ...

  5. java 并发队列_JAVA并发编程:阻塞队列BlockingQueue之SynchronousQueue

    前面在讲解Executors工厂创建可缓存线程的线程池(newCachedThreadPool)的时候有提到过SynchronousQueue队列,该线程池使用 SynchronousQueue 作为 ...

  6. java 并发实例_java一些常用并发工具示例

    最近把<java并发编程实战>-Java Consurrency in Practice 重温了一遍,把书中提到的一些常用工具记录于此: 一.闭锁(门栓)- CountDownLatch ...

  7. java 并发锁_Java并发教程–锁定:内在锁

    java 并发锁 在之前的文章中,我们回顾了在不同线程之间共享数据的一些主要风险(例如原子性和可见性 )以及如何设计类以安全地共享( 线程安全的设计 ). 但是,在许多情况下,我们将需要共享可变数据, ...

  8. java 并发线程_Java并发教程–线程之间的可见性

    java 并发线程 当在不同线程之间共享对象的状态时,除了原子性外,其他问题也会发挥作用. 其中之一是可见性. 关键事实是,如果没有同步,则不能保证指令按照它们在源代码中出现的顺序执行. 这不会影响单 ...

  9. java 并发计数器_Java 8 LongAdders:管理并发计数器的正确方法

    java 并发计数器 我只是买了新玩具,而Java 8有很多 . 这次我想谈谈我的最爱之一-并发加法器. 这是一组新的类,用于管理由多个线程编写和读取的计数器. 新的API有望显着提高性能,同时仍使事 ...

最新文章

  1. or1200乘法除法指令解释
  2. 关于Presenting view controllers on detached view ...
  3. 那些年,一起学的Java 7-3
  4. scala 定义空的list_18.scala的型变
  5. extract-text-webpack-plugin 的使用及安装
  6. python官网32位下载_python32位下载-Python for Windows 32位下载 v3.8.0官方版--pc6下载站...
  7. CascadingStyleSheets
  8. bug__android studio 出现布局文件不提示,且点击代码不能跟踪代码
  9. Java DataOutputStream writeChars()方法及示例
  10. 2011年最后一小时
  11. 【白皮书分享】2020全球数字治理白皮书.pdf(附下载链接)
  12. java eclipse 下载_JAVA下载安装及eclipse下载安装
  13. Java:idea查看JDK源码
  14. vue 在线编辑excel表格(原生和使用组件的两种方式)
  15. “云上贵州”成全国首个国密算法应用试点项目 阿里政务云实现“国家级”安全保护...
  16. 树莓派系统镜像的下载和烧录
  17. 爬虫技术python爬到女性语音_python爬虫看看虎牙女主播中谁最“顶”步骤详解
  18. excel中单元格日期为计算机日期,#excle里设置今天的日期#excel表格时间如何自动修改为当天的时间...
  19. 《卓有成效的管理者》——学习心得(五)
  20. Hive可视化工具squirrel-sql --小松鼠

热门文章

  1. mysql数据库如何修改ip地址
  2. Docker服务卡死如何解决?
  3. 微信群管理软件哪个好用?来看看大神都爱用哪些软件吧?
  4. RxAndroid jar包引入异常导致java.lang.NoClassDefFoundError: Failed resolution of: Lio/reactivex/android/sche
  5. win10 不用重装系统修改 C:\Users\用户名为英文
  6. Java反应式框架Reactor中的Mono和Flux,Java程序员必看
  7. CCTV:未知木马防不胜防 主动防御是防毒软件发展方向
  8. ffmpeg 将视频分割为小段
  9. 软工非全研究生学习和工作总结-开题和第三辆捷安特
  10. 海康NVR网络容错、负载均衡、多址设定的区别是什么?