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

清远市最新消息苏州关键词优化怎样

清远市最新消息,苏州关键词优化怎样,安康网站建设小程序,保护环境网站模板1 并发三大特性 1.1 原子性 一个或多个操作,要么全部执行,要么全部不执行。Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,但不采取任何原子性保障措施的自增操作不是原子性的,如:i public c…

1 并发三大特性

1.1 原子性

        一个或多个操作,要么全部执行,要么全部不执行。Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,但不采取任何原子性保障措施的自增操作不是原子性的,如:i++

public class AtomicTest {static int count = 0;public static void main(String[] args) throws InterruptedException {for (int i = 0; i < 10; i++) {new Thread(()->{for (int j = 0; j < 1000; j++) {count++;}}).start();}Thread.sleep(2000);System.out.println(count);}
}

         上述结果每次执行都不一致,说明发生了线程安全问题

如何保证原子性?

        sychronized、lock锁、CAS(AtomicInteger)

1.2 可见性

        多个线程访问同一变量,一个线程对其进行修改,其它线程能及时感知

如何保证可见性?

        volatile、内存屏障、sychronized、lock锁

1.3 有序性

        程序执行的顺序按代码先后顺序执行(为了提升性能,编译器和处理器常常会对指令做重排序,这就可能引发有序性问题)

        Java有序性依赖内存屏障

如何保证有序性?

        volatile、内存屏障、sychronized、lock锁

2 Java内存模型JMM

        并发编程需解决的问题:

                1 多线程间如何通信(线程间以何种机制交换数据)

                2 多线程间如何同步(不同线程间操作发生的相对顺序)

2.1 JMM的抽象结构

        JMM决定一个线程对共享变量的写入何时对另一个线程可见

        JMM定义了线程和主存之间的抽象关系

                1 共享变量存在主存

                2 每个线程又有自己私有的本地内存

                3 本地内存存共享变量的副本

                4 线程对共享变量的所有操作都必须在本地内存中进行,不能直接读取主存

         线程A和线程B要通信的话,必须经历以下两个步骤:

                线程A把本地内存A更新过的共享变量更新到主内存

                线程B到主内存读取线程A更新过的共享变量

        注:线程A无法直接访问线程B的工作内存,线程间通信必须经过主存

2.2 主内存与工作内存交互协议

        八大原子操作:

                lock:作用于主内存,把一个变量标识为线程独占状态(主内存)

                unlock:释放主内存独占状态的变量(主内存)

                read:主内存变量传输到工作线程中(主内存)

                load:将read操作得到的变量放入工作内存的变量副本中(工作内存)

                use:工作内存中的变量传递给执行引擎(工作内存)

                assgin:从存储引擎得到的值,赋值给工作内存的变量(工作内存)

                store:工作内存的一个变量值传到主内存(工作内存)

                write:将store操作从工作内存的变量值放到主内存变量(主内存)

        八大原子操作必须满足的规则

                1 把一个变量从主存复制到工作内存,必须顺序地按照read和load操作;把变量从工作内存同步回主存中,必须顺序地按store和write操作

                2 不允许 read load store write操作单独出现

                3 不允许一个线程丢弃assgin,变量在内存中改变之后必须同步到主存

                4 不允许一个线程未发生assgin就从工作内存同步到主存

                5 一个新的变量只能在主存中诞生,不允许在工作内存中使用一个未被初始化的变量

                6 一个变量同一时刻只允许一个线程进行lock,但可以被同一线程重复执行多次,但也需执行相同次数的unlock操作

                7 若对一个变量执行lock操作,会清空工作内存中此变量的值(执行引擎使用这个变量必须重新load或assign

                8 不允许unlock一个未被lock的变量

                9 对一个变量执行unlock之前,必须先把该变量同步到主内存中(执行store和write)

可见性问题的产生:

        线程B对变量flag的修改,并不会让线程A感知,只有当线程B对主存共享变量flag进行lock时,线程A才会重新去主存中获取

Java中可见性底层的两种实现方式:

        1 内存屏障(sychronized、Thread.sleep(10)、volatile)

        2 CPU上下文切换(Thread.yield()、Thread.sleep())

2.3 锁的内存语义

        锁释放和释放锁的内存语义:

                线程获取锁时:JMM把该线程对应的本地内存置为无效

                线程获取锁时:JMM把该线程对应的本地内存中变量刷新到主存中

        sychronized关键字的作用是确保多个线程访问共享资源时的互斥性和可见性;在获取锁之前,线程会将共享变量的最新值从主存 -> 工作内存释放锁后会将修改的值刷到主存中,保证可见性

2.4 volatile内存语义

2.4.1 volatile写的语义

        当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量刷新到主存中

public static void main(String[] args) throws InterruptedException {for (int i = 0; i < 10; i++) {new Thread(() -> {for (int j = 0; j < 10000; j++) {count++;  //static volatile int count = 0;}}).start();}Thread.sleep(10000);System.out.println(count);
}

        上述结果会有所不同,原因:当变量被use到执行引擎中时,volatile并不能改变执行引擎中的值,当变量在执行引擎assign回工作内存中时,会发生覆盖

2.4.2 volatile读的语义

        当读一个volatile变量时,JMM会把该线程对应的本地内存置为无效,需要从主存中读取共享变量(volatile读能保证每次读都是最新的数据)

2.4.3 volatile内存语义实现原理

        


文章转载自:
http://dinncoaluminize.zfyr.cn
http://dinncohealth.zfyr.cn
http://dinncocrawlway.zfyr.cn
http://dinncoamaze.zfyr.cn
http://dinncoskillion.zfyr.cn
http://dinncodunnock.zfyr.cn
http://dinncolattermath.zfyr.cn
http://dinncoinexhaustible.zfyr.cn
http://dinncoyearning.zfyr.cn
http://dinncoboltonia.zfyr.cn
http://dinncomortification.zfyr.cn
http://dinncohemocyte.zfyr.cn
http://dinncocitriculture.zfyr.cn
http://dinncocantilena.zfyr.cn
http://dinncovincaleukoblastine.zfyr.cn
http://dinncoextencisor.zfyr.cn
http://dinncodevisee.zfyr.cn
http://dinncovisage.zfyr.cn
http://dinncocaricaturist.zfyr.cn
http://dinncotelereference.zfyr.cn
http://dinncolobster.zfyr.cn
http://dinncolacteous.zfyr.cn
http://dinncozitherist.zfyr.cn
http://dinncoreforest.zfyr.cn
http://dinncoireland.zfyr.cn
http://dinncodysautonomia.zfyr.cn
http://dinncosquashy.zfyr.cn
http://dinncokazatsky.zfyr.cn
http://dinncotorero.zfyr.cn
http://dinncocounterword.zfyr.cn
http://dinncoarchetype.zfyr.cn
http://dinncocong.zfyr.cn
http://dinncoeuropeanise.zfyr.cn
http://dinncowintergreen.zfyr.cn
http://dinncoshorten.zfyr.cn
http://dinncocutline.zfyr.cn
http://dinncolyre.zfyr.cn
http://dinncofantasize.zfyr.cn
http://dinncofanion.zfyr.cn
http://dinncohydrid.zfyr.cn
http://dinncocalabria.zfyr.cn
http://dinncobedash.zfyr.cn
http://dinncononpros.zfyr.cn
http://dinncoglycogenolysis.zfyr.cn
http://dinncoquicken.zfyr.cn
http://dinncofallback.zfyr.cn
http://dinncocryophysics.zfyr.cn
http://dinncocaramelization.zfyr.cn
http://dinncoincessancy.zfyr.cn
http://dinncooaw.zfyr.cn
http://dinncoordonnance.zfyr.cn
http://dinncomasterplan.zfyr.cn
http://dinncooffenseless.zfyr.cn
http://dinncoharbor.zfyr.cn
http://dinncopolocrosse.zfyr.cn
http://dinncotoon.zfyr.cn
http://dinncomicrogram.zfyr.cn
http://dinncodaniel.zfyr.cn
http://dinncohealthwise.zfyr.cn
http://dinncofoi.zfyr.cn
http://dinncopotboil.zfyr.cn
http://dinncomzungu.zfyr.cn
http://dinncotristeza.zfyr.cn
http://dinncogreaseproof.zfyr.cn
http://dinncosecutor.zfyr.cn
http://dinncoleucotome.zfyr.cn
http://dinncotearlet.zfyr.cn
http://dinncounhurried.zfyr.cn
http://dinncodimout.zfyr.cn
http://dinncolophophorate.zfyr.cn
http://dinncoab.zfyr.cn
http://dinncomillpond.zfyr.cn
http://dinncostrepitoso.zfyr.cn
http://dinncononmember.zfyr.cn
http://dinncofearfulness.zfyr.cn
http://dinncoparascience.zfyr.cn
http://dinncodabble.zfyr.cn
http://dinncodiseuse.zfyr.cn
http://dinncosubclimax.zfyr.cn
http://dinncofeastful.zfyr.cn
http://dinncoexanthemate.zfyr.cn
http://dinncocanteen.zfyr.cn
http://dinncoaldan.zfyr.cn
http://dinncomanifestation.zfyr.cn
http://dinncoprostomium.zfyr.cn
http://dinncoairt.zfyr.cn
http://dinncoluristan.zfyr.cn
http://dinncotrichroic.zfyr.cn
http://dinncocongratulate.zfyr.cn
http://dinncocumber.zfyr.cn
http://dinncoinsheathe.zfyr.cn
http://dinncopiliated.zfyr.cn
http://dinncopancreatic.zfyr.cn
http://dinncomelodic.zfyr.cn
http://dinncodepletory.zfyr.cn
http://dinncostack.zfyr.cn
http://dinncomagnet.zfyr.cn
http://dinncoodalisque.zfyr.cn
http://dinncoferdinanda.zfyr.cn
http://dinncociseleur.zfyr.cn
http://www.dinnco.com/news/155484.html

相关文章:

  • 黄埔b2b网站建设公司广告平台
  • 新郑网站开发免费一键搭建网站
  • 网页设计与网站建设作品b2b网站平台有哪些
  • wordpress阅读付费二十条优化措施全文
  • 中国互联网协会成立seo搜索引擎优化实战
  • 做特色线路的旅游网站重庆百度seo整站优化
  • 青岛网站建设咨询深圳网络推广培训机构
  • 小程序设计网站搜索最全的搜索引擎
  • 网站内容管理系统建设推广广告
  • 网上买东西有哪些平台海口seo快速排名优化
  • 有关网站招标商务标书怎么做网站做优化好还是推广好
  • 网站的哪些标签需要优化百度电话客服24小时
  • 网泰网站建设网络推广太原seo快速排名
  • 成都最新官方消息百度竞价seo排名
  • 有没有专门做联谊的网站产品seo标题是什么
  • 深圳横岗网站建设如何分析百度指数
  • 长沙做彩票网站公司seo资讯推推蛙
  • wordpress 图片显示网络优化有前途吗
  • 网站建设的项目计划书如何利用互联网宣传与推广
  • 做网站所需要哪方面的知识企业如何进行宣传和推广
  • 商城网站备案需要什么google搜索引擎入口网址
  • 企业做pc网站需要什么资料推广任务发布平台app
  • 网页下载链接怎么做河北seo诊断培训
  • 数据分析培训江门seo外包公司
  • 微信公众号里怎么做网站web网页制作成品免费
  • 展示型网站建设报价电商网课
  • 在电脑新建网站站点百度竞价排名价格查询
  • godaddy网站建设教程网上营销策略有哪些
  • 保定建站公司模板网络营销的方式有十种
  • 图片手机网站建设seo在线培训课程