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

广州网站建设q479185700棒自己网站怎么做外链

广州网站建设q479185700棒,自己网站怎么做外链,企业网站建设网站有哪些,西宁手机微网站关于线程和线程不安全#xff1a; 概述 编辑 如果你的代码所在的进程中有多个线程在同时运行#xff0c;而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的#xff0c;而且其他的变量的值也和预期的是一样的#xff0c;就是线程安全的。或者说…关于线程和线程不安全   概述 编辑 如果你的代码所在的进程中有多个线程在同时运行而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的而且其他的变量的值也和预期的是一样的就是线程安全的。 或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。 线程安全问题都是由全局变量及静态变量引起的。 若每个线程中对全局变量、静态变量只有读操作而无写操作一般来说这个全局变量是线程安全的若有多个线程同时执行写操作一般都需要考虑线程同步否则的话就可能影响线程安全。 安全性 编辑 类要成为线程安全的首先必须在单线程环境中有正确的行为。如果一个类实现正确(这是说它符合规格说明的另一种方式)那么没有一种对这个类的对象的操作序列(读或者写公共字段以及调用公共方法)可以让对象处于无效状态观察到对象处于无效状态、或者违反类的任何不可变量、前置条件或者后置条件的情况。 此外一个类要成为线程安全的在被多个线程访问时不管运行时环境执行这些线程有什么样的时序安排或者交错它必须仍然有如上所述的正确行为并且在调用的代码中没有任何额外的同步。其效果就是在所有线程看来对于线程安全对象的操作是以固定的、全局一致的顺序发生的。 正确性与线程安全性之间的关系非常类似于在描述 ACID(原子性、一致性、独立性和持久性)事务时使用的一致性与独立性之间的关系从特定线程的角度看由不同线程所执行的对象操作是先后(虽然顺序不定)而不是并行执行的。 举例 编辑 比如一个 ArrayList 类在添加一个元素的时候它可能会有两步来完成1. 在 Items[Size] 的位置存放此元素2. 增大 Size 的值。 在单线程运行的情况下如果 Size 0添加一个元素后此元素在位置 0而且 Size1 而如果是在多线程情况下比如有两个线程线程 A 先将元素存放在位置 0。但是此时 CPU 调度线程A暂停线程 B 得到运行的机会。线程B也向此 ArrayList 添加元素因为此时 Size 仍然等于 0 注意哦我们假设的是添加一个元素是要两个步骤哦而线程A仅仅完成了步骤1所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行都增加 Size 的值。 那好我们来看看 ArrayList 的情况元素实际上只有一个存放在位置 0而 Size 却等于 2。这就是“线程不安全”了。 安全程度 编辑 线程安全性不是一个非真即假的命题。 Vector 的方法都是同步的并且 Vector 明确地设计为在多线程环境中工作。但是它的线程安全性是有限制的即在某些方法之间有状态依赖(类似地如果在迭代过程中 Vector 被其他线程修改那么由 Vector.iterator() 返回的 iterator会抛出ConcurrentModificationException)。 对于 Java 类中常见的线程安全性级别没有一种分类系统可被广泛接受不过重要的是在编写类时尽量记录下它们的线程安全行为。 Bloch 给出了描述五类线程安全性的分类方法不可变、线程安全、有条件线程安全、线程兼容和线程对立。只要明确地记录下线程安全特性那么您是否使用这种系统都没关系。这种系统有其局限性 -- 各类之间的界线不是百分之百地明确而且有些情况它没照顾到 -- 但是这套系统是一个很好的起点。这种分类系统的核心是调用者是否可以或者必须用外部同步包围操作(或者一系列操作)。下面几节分别描述了线程安全性的这五种类别。 不可变 不可变的对象一定是线程安全的并且永远也不需要额外的同步[1] 。因为一个不可变的对象只要构建正确其外部可见状态永远也不会改变永远也不会看到它处于不一致的状态。Java 类库中大多数基本数值类如 Integer 、 String 和 BigInteger 都是不可变的。 需要注意的是对于Integer该类不提供add方法加法是使用来直接操作。而操作是不具线程安全的。这是提供原子操作类AtomicInteger的原因。 线程安全 线程安全的对象具有在上面“线程安全”一节中描述的属性 -- 由类的规格说明所规定的约束在对象被多个线程访问时仍然有效不管运行时环境如何排列线程都不需要任何额外的同步。这种线程安全性保证是很严格的 -- 许多类如 Hashtable 或者 Vector 都不能满足这种严格的定义。 有条件的 有条件的线程安全类对于单独的操作可以是线程安全的但是某些操作序列可能需要外部同步。条件线程安全的最常见的例子是遍历由 Hashtable 或者 Vector 或者返回的迭代器 -- 由这些类返回的 fail-fast 迭代器假定在迭代器进行遍历的时候底层集合不会有变化。为了保证其他线程不会在遍历的时候改变集合进行迭代的线程应该确保它是独占性地访问集合以实现遍历的完整性。通常独占性的访问是由对锁的同步保证的 -- 并且类的文档应该说明是哪个锁(通常是对象的内部监视器(intrinsic monitor))。 如果对一个有条件线程安全类进行记录那么您应该不仅要记录它是有条件线程安全的而且还要记录必须防止哪些操作序列的并发访问。用户可以合理地假设其他操作序列不需要任何额外的同步。 线程兼容 线程兼容类不是线程安全的但是可以通过正确使用同步而在并发环境中安全地使用。这可能意味着用一个 synchronized 块包围每一个方法调用或者创建一个包装器对象其中每一个方法都是同步的(就像 Collections.synchronizedList() 一样)。也可能意味着用 synchronized 块包围某些操作序列。为了最大程度地利用线程兼容类如果所有调用都使用同一个块那么就不应该要求调用者对该块同步。这样做会使线程兼容的对象作为变量实例包含在其他线程安全的对象中从而可以利用其所有者对象的同步。 许多常见的类是线程兼容的如集合类 ArrayList 和 HashMap 、 java.text.SimpleDateFormat 、或者 JDBC 类 Connection 和 ResultSet 。 线程对立 线程对立类是那些不管是否调用了外部同步都不能在并发使用时安全地呈现的类。线程对立很少见当类修改静态数据而静态数据会影响在其他线程中执行的其他类的行为这时通常会出现线程对立。线程对立类的一个例子是调用 System.setOut() 的类 参考:JinboFu123 转载于:https://www.cnblogs.com/GuangMingDingFighter/p/9428236.html
http://www.zqtcl.cn/news/243003/

相关文章:

  • 怎么登陆建设工程网站泉州网红
  • 哈尔滨队网站网页美工跨境电商是什么意思
  • 网站规划与建设课程推广型网站建设软件
  • 山东网站建设系统网站设计哪家更好
  • 网络推广有哪些网站网络推广公司联系昔年下拉
  • 长沙专业外贸建站公司百度提交网站入口网站
  • 西安网站搭建建设定制市场营销推广策略
  • 用户等待网站速度公司网站怎么做站外链接
  • 设计新闻发布网站模板wonder audio wordpress
  • 教育与培训网站建设wordpress侧栏文章
  • 四川做网站的公司哪家好信誉好的赣州网站建设
  • seo外包网站网站的备案流程图
  • 学网站建设好么免费网页制作有哪些
  • 宁波公司网站开发招聘最便宜的视频网站建设
  • 找人做网站大概多少钱永州企业网站建设
  • 免费备案网站空间网站怎么做组织图
  • 四川省和城乡建设厅网站怎么做网站淘宝转换工具
  • 网站单页支付宝支付怎么做的排名优化公司口碑哪家好
  • 淄博网站制作服务推广做网站服务器配置
  • ppt做的好的有哪些网站有哪些广州品牌型网站建设
  • 怎么学做一件完整衣服网站网站 相对路径
  • 十大wordpress主题江门seo排名优化
  • 石家庄网站搭建定制在百度上如何上传自己的网站
  • 南宁建设厅官方网站福州中小企业网站制作
  • 模板网站建设平台昆山专业网站建设公司哪家好
  • 百度指数的数值代表什么网站建设优化的作用
  • 河南便宜网站建设价格wordpress页面图片插件
  • 网站生成wordwordpress汽车主题公园
  • 网络营销成功的案例及其原因湖南网站seo地址
  • 潍坊企业网站模板绩效考核表 网站建设