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

营销型企业网站建设案例注册城乡规划师报考条件

营销型企业网站建设案例,注册城乡规划师报考条件,网络营销策略分析,来年做那些网站致富目录 一、原子性问题 1、带来原子性问题的原因 2、如何解决线程切换带来的原子问题 2.1、使用synchronized关键字来保证 2.2、使用CAS来保证原子性 2.3、使用lock锁来保证 一、原子性问题 1、带来原子性问题的原因 线程切换是带来原子的根本原因,java的并发程…

目录

一、原子性问题

1、带来原子性问题的原因

 2、如何解决线程切换带来的原子问题

2.1、使用synchronized关键字来保证

2.2、使用CAS来保证原子性

2.3、使用lock锁来保证


一、原子性问题

1、带来原子性问题的原因

线程切换是带来原子的根本原因,java的并发程序是基于多线程的,自然就会涉及到任务切换。而任务切换的时机是可以发生cpu的时间片结束时,由于目前我们使用的编程语言都是高级语言,一条高级语言往往是需要多条CPU指令完成的,例如count++,至少需要三条CPU指令。

  1. 指令1:首先需要把变量count从主内存中加载cpu的寄存器中
  2. 指令2:在寄存器中执行+1操作
  3. 指令3:将结果写入内存(缓存机制可能导致写入的是cpu的缓存而不是内存)

如下图所示,两个线程如果在执行count++的时候,过程如果发生了线程切换,会导致得不到预期的结果2,可能会出现意向不到结果,两个线程对count执行++操作后,在主内存中值为1. 

原子性的定义:原子性指一个操作是不可分割的,不可中断的,一个线程在执行时,另一个线程不会影响到他

private static int count;public static void increment(){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}count++;}public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(() -> {for (int i = 0; i < 100; i++) {increment();}});Thread t2 = new Thread(() -> {for (int i = 0; i < 100; i++) {increment();}});t1.start();t2.start();t1.join();t2.join();System.out.println(count);}

 2、如何解决线程切换带来的原子问题

本质就是保存这块有非原子的操作语句,同一个时刻只能被一个线程访问到,并且对修改后的值,保证后续线程可见。通常的做法有:

2.1、使用synchronized关键字来保证

之前的increment()方法修改为如下方式:

	public static synchronized void increment(){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}count++;}

2.2、使用CAS来保证原子性

使用CAS来解决的时候,如下所示:

	private static AtomicInteger atomicInteger = new AtomicInteger();public static void increment(){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}atomicInteger.incrementAndGet();}

2.3、使用lock锁来保证

当我们使用锁来保证原子问题时,其示例代码如下:

private static int count = 0;public static  void increment(){ReentrantLock  reentrantLock = new ReentrantLock();try {reentrantLock.lock();Thread.sleep(10);count++;} catch (InterruptedException e) {e.printStackTrace();}finally {reentrantLock.unlock();}}

http://www.yidumall.com/news/25612.html

相关文章:

  • 广州网站建设推荐谷歌官网入口
  • 建站特别慢wordpress百度收录批量提交入口
  • 做啤酒行业的网站培训课程设计方案
  • 个人网站设计源代码广州今日头条新闻最新
  • 工作室做网站爱站工具包的模块
  • 公司网站建设发票能抵扣不管理课程培训
  • 什么是高端网站建设爱上链外链购买交易
  • 电机东莞网站建设网上的推广
  • 南京网站推广哪家便宜网站如何推广运营
  • 网站开发通过什么途径接活小红书seo排名优化
  • 自己做网站怎么样网站设计优化
  • 福建工程建设中心网站做网站
  • 黄山找人做网站陕西新闻今日头条
  • 游戏网站建设论文网络营销策划是什么
  • 开发区网站建设刷网站百度关键词软件
  • 关于网站设计毕业论文题目百度热度指数排行
  • 简单的公司网站系统百度天眼查公司
  • 网页设计素材背景图片百度seo优化教程
  • 男人和女人做受吃母乳视频网站免费网络营销软文
  • 建设网站思维导图seo实战技巧100例
  • win7云主机怎么做网站宁波seo推广费用
  • 网站首页有被收录就是最近没有被抓取是怎么回事深圳产品网络推广
  • 北京故宫网站建设分析中国十大新闻网站排名
  • 木藕设计网站大全重庆网站建设推广
  • 信息网站制作汕头seo建站
  • wordpress网站备案号哪里可以买链接网站
  • 佛山做外贸网站特色新闻摘抄2022最新5篇
  • 外贸网站制作有哪些软文营销模板
  • html网站开发中的应用口碑营销案例分析
  • 做外贸仿牌网站免费自助建站网站