java如何使用代码模拟高并发操作

Java通过代码模拟高并发可以以最快的方式发现我们系统中潜在的线程安全性问题,此处使用Semaphore(信号量)和 CountDownLatch(闭锁)搭配ExecutorService(线程池)来进行模拟,主要介绍如下:

1、Semaphore

JDK 1.5之后会提供这个类

Semaphore是一种基于计数的信号量。它可以设定一个阈值,基于此,多个线程竞争获取许可信号,做完自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞。Semaphore可以用来构建一些对象池,资源池之类的,比如数据库连接池,我们也可以创建计数为1的Semaphore,将其作为一种类似互斥锁的机制,这也叫二元信号量,表示两种互斥状态。

2、CountDownLatch

JDK 1.5之后会提供这个类,

CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。

CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。

如下图:

java如何使用代码模拟高并发操作图1

java如何使用代码模拟高并发操作图2

如上方法模拟5000次请求,同时最大200个并发操作,观察最后的结果,发现每次的结果都有差别,和预期不符,得出结果部分如下:

java如何使用代码模拟高并发操作图3

最后结论:add 方法 非线程安全

那如何保证add方法 线程安全,将add方法进行如下修改即可:

java如何使用代码模拟高并发操作图4

执行结果如下:

java如何使用代码模拟高并发操作图5

最后结论:修改后 的 add 方法 线程安全

本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023-03-03 09:24
下一篇 2023-03-03 11:49

相关推荐

  • 5个免费好用的微信小程序

    现在的手机App体积越来越大了,不妨把目光转移到微信小程序上。今天给大家推荐8个免费好用的微信小程序,个个都是精品,请你低调使用。 01.桌面翻页时钟 特点:让手机全屏显示时间。 …

    2023-09-05
  • 华为手机密码怎么修改不用原来的密码

    华为手机,作为全球知名的科技公司所打造的智能设备,已经成为了我们生活中不可或缺的一部分。而密码,作为保护手机和个人信息的一道防线,其重要性不言而喻。作为一名华为手机用户,今天我就教…

    2023-12-01
  • 帝尊手游怎么刷灵石

    帝尊手游刷灵石烧饼修改器怎么使用?下面小编为大家带来帝尊手游刷灵石烧饼修改器使用攻略详解,希望攻略能够对大家有所帮助。 帝尊手游刷灵石烧饼修改器可以帮助玩家修改帝尊游戏中的灵石和黄…

    2023-05-01
  • 怎么破解锁屏密码呢,强制锁频

    安卓手机: 1、首先将手机关机,然后在开机的时候按住音量减键不放,再按电源键即可进入手机re。 2、进入re后,音量键选择wipe data/factory reset,清空数据/…

    数码科技 2023-09-02
  • 一部手机能同时登录3个微信吗,一部手机可以同时登录3个微信

    微信占据了我们的生活,很多人为了让自己的私人生活不受打扰,准备两部手机,这样就有两个微信了,一个用来工作,个人私生活不受打扰,另一个则是生活号。不过其实不需要那么麻烦,为了要一个微…

    2023-11-03
  • 无法连接到app store是怎么回事

    很多使用iphone手机的朋友,可能有时候会遇到无法连接到app store的问题,就是你想打开app store的时候一直打不开,最后在屏幕上显示“无法连接iTunes Stor…

    数码科技 2023-03-19
  • 教你如何自己给手机贴膜

    手机膜的发展由以往的PVC,PET等材质发展成今天的钢化膜,钢化膜相比一般的塑料能起到更好的防划,防摔的的作用,从而更好的保护我们的手机。今天就给大家分享下如何自己给手机完美贴膜,…

    2023-08-31
  • 手机qq怎么关闭关键词推荐表情

    [闽南网] 今天为大家带来的是手机版QQ净化教程,设置关闭打字弹出表情方法,希望能对各位有所帮助。 一、去除消息回复关键词弹出相关表情。 是不是觉得有的时候回复消息,想点击发送却手…

    2023-12-28
  • 怎样关闭qq和微信开机启动

    如果用的是三星、HTC等,可以对手机进行root,然后使用“权限管理”找到“自启动管理”,找到QQ和微信,关闭即可。 一般现在的手机都自带自启动管理,可以直接设置。 较老的手机可以…

    数码科技 2023-08-13
  • 小学二年级数学趣味游戏

    1、在玩玩、说说、摆摆中感知不同大小、颜色的石头。   2、能够愉快地用石头进行分类、排序等操作活动。   3、乐意参与活动,体验玩石头的快乐。   活动目标:   1、操作盒人手…

    数码科技 2023-02-19