当前位置: 首页 > news >正文

jsp网站开发技巧深圳手机企业网站设计

jsp网站开发技巧,深圳手机企业网站设计,酷网站欣赏,网站怎么通过流量赚钱文章目录 前言一、场景描述二、加锁1.synchronized2.ReentrantLock 三、扩展1.ThreadLocal 总结 前言 在多线程场景下#xff0c;多个线程同时对共享变量进行操作是存在风险的#xff0c;这时候就需要加锁来保证数据的正确性。 一、场景描述 我这里有5个无人机,准备卖到乌克… 文章目录 前言一、场景描述二、加锁1.synchronized2.ReentrantLock 三、扩展1.ThreadLocal 总结 前言 在多线程场景下多个线程同时对共享变量进行操作是存在风险的这时候就需要加锁来保证数据的正确性。 一、场景描述 我这里有5个无人机,准备卖到乌克兰,奈何买家太多了,应酬不来,就挂到了网上,先到先得。 卖方 Controller public class StudentLockController {private static int number5;public boolean get(){String name Thread.currentThread().getName();if(number0){try {//模拟业务处理时间Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(name业务处理成功);number--;return true;}System.out.println(name业务处理失败);return false;}public int size(){return number;} }买方 RunWith(SpringRunner.class) SpringBootTest(classes SpringbootStart.class) public class SpringbootStartTest {Autowiredprivate StudentLockController studentLockController;Testpublic void test(){normal();}public void normal(){int count10;ExecutorService threadPool Executors.newFixedThreadPool(count);FutureBoolean submit null;for(int i0;icount;i){submit threadPool.submit(() - studentLockController.get());}try {submit.get();Thread.sleep(1500);} catch (InterruptedException e) {throw new RuntimeException(e);} catch (ExecutionException e) {throw new RuntimeException(e);}System.out.println(数量:studentLockController.size());threadPool.shutdown();} }来了10个买家,都抢上了这库存就5个了肯定不够这样不行得重新抢我加个锁让他们排队去 二、加锁 1.synchronized public synchronized boolean get(){String name Thread.currentThread().getName();if(number0){try {//模拟业务处理时间Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(name业务处理成功);number--;return true;}System.out.println(name业务处理失败);return false;}给这个方法加个锁,但这个锁范围太大了,导致我库存没卖完,这不耽误挣钱了嘛,那哪行,继续改。 2.ReentrantLock Controller public class StudentLockController {private static int number5;private ReentrantLock rlnew ReentrantLock();public boolean get(){String name Thread.currentThread().getName();while (!rl.tryLock()){try {//获取锁等待时间Thread.sleep(500);} catch (InterruptedException e) {throw new RuntimeException(e);}};try {if(number0){//模拟业务处理时间Thread.sleep(1000);System.out.println(name业务处理成功);number--;return true;}} catch (Exception e) {throw new RuntimeException(e);}finally {if(rl.isLocked()){rl.unlock();}}System.out.println(name业务处理失败);return false;}public int size(){return number;} }嗯东西都卖出去了没货了就失败了这个能挣大钱了ReentrantLock这个好 三、扩展 每个买家购买物品之前需要登陆,一个买家账户会开启一个专门的线程来维护,买家有3次用户名、密码失败的次数,这就需要控制每个线程拥有单独的变量,ThreadLocal可以为每个线程开辟单独的工作空间。 1.ThreadLocal private static ThreadLocalInteger threadLocal new ThreadLocal();threadLocal.set(0);Integer count threadLocal.get();if(count 3){System.out.println(已经达到最大重试次数,请联系管理员进行重置!);}threadLocal.remove();总结 回到顶部 加锁是为了保证多线程下数据的安全,但是锁过多和范围过大会影响程序性能增加服务的处理时间所以使用锁要考虑当前的业务场景是否合适。
http://www.pierceye.com/news/129276/

相关文章:

  • 丰台建站公司做一个企业网站需要哪些技术
  • 黑色网站模板怎么写app程序
  • 常州建设局网站首页网站开发需求文档模板带er图
  • 网站名称是否已被注册简单的个人主页网站制作
  • 太仓网站开发wordpress留言板
  • 大型营销型网站制作装饰画
  • 移动网站和定制网站个体户 做网站
  • 网站建设的计划书网站源码下载 用户注册
  • 培训网站项目ppt怎么做抖音服务商
  • 做一个网站需要多少钱大概费用wordpress 2017
  • 惠州网页模板建站天河建设网站外包
  • html变Wordpress网络营销优化培训
  • 上海网站建设hxwlkj新浪网站源代码
  • 网站如何做美工想做代理商去哪找项目
  • 佛山市品牌网站建设多少钱印度网站开发成本
  • 群晖 nas 做网站软件开发视频网站
  • 建设银行云南分行招聘网站wordpress 教程
  • 杭州知名的网站制作策略创建一个购物网站需要什么
  • 新乡网站seo优化vs做的网站怎么让局域网的看到
  • 做静态网站怎样让图片自己切换重庆互联网公司排名
  • 微网站需要什么郑州哪家专业做淘宝网站
  • 郑州机械网站制作seo专业优化公司
  • 专注苏州网站优化长沙有哪些知名网站
  • 成品网站货源1688免费推荐建设银行科技中心网站
  • 城乡建设部统计信息网站大学生创新创业大赛项目计划书
  • 河南省水利建设厅网站清溪镇网站仿做
  • 深圳建设企业网站wordpress安装对搜索引擎
  • 做药物分析网站做网站花钱吗
  • 字体图标制作网站恒一信息深圳网站建设公司1
  • 制作一个自己的网站小白node怎么做网站