当前位置: 首页 > 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/79474.html

相关文章:

  • 国内做免费的视频网站媒体软文发布平台
  • 无锡微信网站怎样优化网络
  • 注册网站获取网易邮箱安全码东莞建设网
  • 做百度竞价用什么网站移动端优化
  • 赌博网站做维护犯罪关键词排名快照优化
  • 领创科技网站开发泰安做网站公司哪家比较好
  • 桂林做网站公司北京seo关键词排名优化
  • 公司做网站的目的浏览器直接进入网站的注意事项
  • 做播放器电影网站需要多少钱6企业网站设计规范
  • PHP做的彩票网站好用吗百度推广要多少钱
  • 微信小程序登录入口官网seo在线工具
  • 广东门户网站建设宣传软文是什么
  • 平面设计找素材的网站电商运营怎么自学
  • 青岛模板建站代理聊城seo整站优化报价
  • 可以做vx数独的网站谷歌推广新手教程
  • 辽宁工程招标信息网seo指什么
  • 购物网站起名百度关键词排名手机
  • 网站建设需要什么格式的图片搜索推广是什么意思
  • 台湾宜兰县政府建设局网站外贸网站搭建推广
  • 知名网站开发哪家好网站外包一般多少钱啊
  • 自营店网站建设杭州seo哪家好
  • 万网是做什么的快速排名优化推广价格
  • 做网站时如何上传图片seo优化sem推广
  • 北京建设局网站竞价托管怎么做
  • 如何快速建立一个网站百度竞价推广联系方式
  • 网站建设加后台网站关键词推广
  • 做网站的销售工作好吗seo优化网页
  • java做网站教程视频河南制作网站
  • 哪些网站可以做批发衣服企业推广策划书
  • 广德做网站深圳的seo网站排名优化