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

网站开发前后端分工网络营销咨询服务

网站开发前后端分工,网络营销咨询服务,模板网文,淄博市沂源县城乡建设局网站什么是线程安全的(thread-safe)#xff1f;在java中#xff0c;线程安全的指的是代码可以在并发的或者多线程的环境下安全的使用或者共享#xff0c;并且它们都将按照期望的方式运行。任何代码#xff0c;类或者对象#xff0c;如果它们在并发的环境中运行表现出的行为与在…什么是线程安全的(thread-safe)在java中线程安全的指的是代码可以在并发的或者多线程的环境下安全的使用或者共享并且它们都将按照期望的方式运行。任何代码类或者对象如果它们在并发的环境中运行表现出的行为与在非并发环境下表现出的行为不一致那么它们就不能被称为线程安全的。本片文章不会非常仔细的介绍线程安全或者Java中的异步处理我们将通过几个例子来帮助你理解什么是线程安全的然后告诉你如何让你的代码线程安全。一个non-thread-safe的例子public class Counter {private int count;/** 这个方法不是线程安全的因为操作不是原子操作*/public int getCount(){return count;}} 上面的例子不是线程安全的因为(自增操作)不是一个原子操作(atomic operation)而是会被拆分成读、更新和写操作(read,update,write)三部分如果多个线程大约在同一时刻调用getCount()方法这三个操作可能会互相重合(coincide)或者重叠(overlap)比如当thread1正在更新数据thread2此时读取数据那他将会获得原来的旧数据最后的结果就是thread2会覆盖掉thread1对数据的增加操作结果就是一个数据被丢失了就是因为程序是并发调用的。如何在Java中实现线程安全要使上面的方法线程安全可以有很多种方式1)使用synchronized关键字来锁定getCount方法以保证同一时刻只有一个线程可以访问getCount方法这样做就能避免重合(coincide)或者重叠(overlap)问题。2)使用AutomicInteger这样就将变成了原子操作因为原子操作是线程安全的这样做还节省了额外的同步操作的开销。下面是一个实现线程安全的例子public class Counter {private int count;AtomicInteger atomicCount new AtomicInteger( 0 );/** 现在这个方法是线程安全的因为增加了synchronized*/public synchronized int getCount(){return count;}/**这个方法是线程安全的因为count的增加操作是原子操作*/public int getCountAtomically(){return atomicCount.incrementAndGet();}} 关于Thread-Safe的一些重要的点这些点在你写线程安全的程序的时候是很有用的而且也能帮你避免一些很严重的并发问题比如竞争条件(race condition)或者死锁1)不可变的对象(immutable objects)默认就是线程安全的因为它们的状态一旦创建就不能被改变。由于字符串在Java中就是不可变的所以它们原本就是线程安全的(关于不可变对象后期会有相关文章进行说明)。2)只读的或者被final修饰的变量也是线程安全的。3)锁机制在Java中是一种实现线程安全的方式。4)静态变量如果没有被正确的synchronized那么它将成为线程安全问题的主要原因。5)Java中的一些线程安全的例子Vector, Hashtable, ConcurrentHashMap, String等。6)Java中的原子操作是线程安全的比如从内存中读取一个32位的int值是线程安全的因为它是原子操作所以不会与其他线程交错。7)局部变量也是线程安全的因为每一个线程都会有属于她自己的一份拷贝。使用局部变量是一种很好的实现线程安全的方式。8)为了实现线程安全尽可能地减少多个线程中对象的共享。9)volatile关键字可以用来指示线程不缓存该变量而是直接从主内存中读取也可以指示JVM不从多线程的角度来重新排序或者优化代码(not to reorder or optimize code from threading perspective)。以上就是本文介绍的一些内容。线程安全是一个比较难以掌握的概念为了确定程序是否线程安全你需要考虑多并发的情况另外JVM为了会对代码进行优化而优化的过程就会涉及到对代码的重新排序所以看起来是串行的程序在开发环境中运行良好但并不能保证在生产环境中会同样良好因为JVM会尽最大可能的进行调整从而进行一些代码重排序和优化这样就会导致线程安全的问题。----------------------------------------------------------------小人不才如有问题欢迎各位不吝赐教
http://www.yutouwan.com/news/432119/

相关文章:

  • 江西宜春网站建设报价微信推广小程序怎么做
  • 移动端网站制作效果好的免费网站建设
  • 做网站有哪些导航条ps免抠素材网站大全
  • 出格网站建设公司设计衣服的软件
  • icp备案添加网站服装微信商城网站建设
  • 江西专业的企业网站建设公司长春做网站 长春万网
  • 建设公司网站需要多少天建设基金会网站
  • 湘潭公司做网站北京专业做网站公司
  • 网站建设项目验收表手机网站收录
  • asp网站开发需要的基本条件wordpress用国外主题很卡
  • 湖南省建设人力资源网站多少关键词排名优化软件
  • 什么是单页网站西安建筑网站建设
  • 高清logo网站建设网站的工作职责
  • 深州做网站公司响应式网站代码规范
  • 网站导航布局互联网是网络营销的媒体
  • 代运营网站wordpress恢复数据库菜单不见了
  • 网站UI怎么做类似卡盟网站卖怎么做
  • 如何查找昆明做网站服务的公司开网站建设公司
  • 燕莎做网站建站国外平台
  • 安全网站建设的研究方法设计师设计费一般多少
  • 关于网站设计东莞网络营销型网站
  • 福州建设局网站seo优化及推广如何运营
  • 长安做网站公司wordpress更改前端引用
  • 网络营销优化推广公司seo外贸网站制作
  • 网站建设公司圣辉友联网站页码
  • 哪家公司做网站便宜阿里巴巴怎么做公司网站
  • 免费做网站平台南昌网站建设平台
  • 装修网站平台有哪些网页设计存在的问题及分析
  • 兰州网站建设公司哪家好怎么免费做网站不要域名
  • 找团队做网站北京微信网站建设电话