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

郑州网站建设网站手机ppt免费制作软件

郑州网站建设网站,手机ppt免费制作软件,企业网站搜索推广,网站存在的缺陷线程通信主要通过共享对字段和对象的访问来发生。 尽管这种通信方式非常高效#xff0c;但它易于出现诸如线程干扰和内存一致性之类的错误。 同步是一种有助于防止此类错误的工具。 但是#xff0c;同步不是免费提供的#xff0c;并且在访问当前由另一个线程持有的锁或对象… 线程通信主要通过共享对字段和对象的访问来发生。 尽管这种通信方式非常高效但它易于出现诸如线程干扰和内存一致性之类的错误。 同步是一种有助于防止此类错误的工具。 但是同步不是免费提供的并且在访问当前由另一个线程持有的锁或对象时会引入延迟。 等待中的线程无法使用该对象直到另一个线程释放该对象上的锁。 这种情况称为线程争用。 它还可能导致死锁和活锁。 在本文中我们将探讨Java提供的用于处理线程同步的不同选项。 同步要点 Java提供了一系列机制来处理基本线程同步和协调。 它支持通过同步方法和同步语句进行细粒度的对象访问同步。 基本线程协调可以通过受保护的块来完成。 所有提到的机制都是围绕获取和释放对象的固有锁定而构建的。 内在锁 每个Java对象都有一个关联的固有锁。 需要对对象的字段进行独占访问的线程必须在访问对象之前获取对象的锁然后在完成后释放固有的锁。 其他尝试访问该对象的线程将阻塞直到持有锁的线程将其释放为止。 同步方法 当线程调用同步方法时 它获取该方法对象的内在锁 并在方法返回时释放它。 即使该方法由于未捕获的异常而返回也将释放该锁定。 如果以静态方法完成则线程将获取与该类关联的类对象的锁。 同步语句 提供更细粒度的同步机制。 同步语句必须指定提供内部锁的对象。 在分离的锁对象上进行同步可以提供字段同步而无需强制方法调用之间进行同步。 守卫的块 如前所述受保护的块为线程协调提供了支持。 受保护的块是每个Java对象的一部分可以使用wait notify和notifyAll方法构造。 wait方法挂起当前线程。 当线程调用wait时它必须拥有对象的固有锁这就是为什么wait调用通常包装在同步方法或语句中的原因。 调用wait方法将挂起线程执行并释放锁。 在某个时刻另一个线程将获取对象的固有锁并调用notifyAll来通知所有线程等待发生重要事件。 在第二个线程释放锁之后等待的线程将重新获取该锁并通过从等待调用中返回来恢复执行。 Notify唤醒单个线程。 无法指定唤醒的具体线程因此仅在我们不关心哪个线程被唤醒时才有用。 Java同步器 Java还提供了五个用于通用特殊用途同步的类。 CountDownLatch CountDownLatch类允许一个或多个线程等待直到其他线程中的一组操作完成。 用计数编号初始化。 await方法将阻塞直到计数达到零为止。 countDown方法减少计数。 当await方法返回时将释放所有等待线程并且随后的await调用将立即返回。 计数无法重置。 信号 信号量用于限制线程对特定资源的访问。 初始化具有许多许可证。 acquire方法将一直阻塞直到获得许可并获得许可为止。 release方法添加许可释放阻止获取者。 请注意调用release不一定必须由称为Acquisition的线程进行。 信号量可以是公平的也可以是不公平的 。 如果公平则线程以FIFO方式获取许可。 尽管起初它看上去与CountDownLatch类似但其目的却完全不同。 循环屏障 CyclicBarrier建立在各方概念的周围。 它允许线程等待彼此到达一个公共的障碍点。 await方法将阻塞直到各方到达为止。 它的行为与CountDownLatch的逆过程相同。 N等待之后它继续。 它支持每个障碍点运行一次的可选可运行对象。 在最后一个聚会到达之后但在释放之前。 它通常用于更新线程之间的共享状态。 它是循环的因为它可以在线程释放后重用 。 交换者 Exchanger是两个线程可以交换信息的同步点。 线程将阻塞直到其对方显示其信息为止。 双方都发生相同的行为。 移相器 Phaser是一个可重用的屏障类似于CountDownLatch和CyclirBarrier 但更加灵活。 在Phaser中创建时注册方的数量不是固定的。 双方可以在通过任何注册时register或bulkRegister方法。 双方可以在抵达时注销arriveAndDeregister 。 它提供了几种同步方法。 arriveAndAwaitAdvance方法的行为与CycleBarrier await方法的行为相同。 arrive和arrive并arriveAndDeregister记录到达但不要阻塞。 awaitAdvance阻塞直到各方到达为止。 它可以终止 强制所有同步方法返回。 可以通过forceTermination方法强制forceTermination 。 它还提供了监视其状态的支持。 值得注意的是同步方法只能由注册方调用而状态可以由任何调用者监视。 监视方法包括getRegisteredParties和getArrivedParties等。 结论 多线程绝对不是一个简单的问题但是使用某些语言提供的工具可以更轻松地解决多线程问题。 就个人而言我不需要每天使用所有工具但是我认为有必要知道它们的存在以及如何提供帮助。 翻译自: https://www.javacodegeeks.com/2016/08/the-java-syncrhonisers.html
http://www.pierceye.com/news/618588/

相关文章:

  • 国外社交网站建设苏州seo门户网
  • 小程序建站公司唐山网页搜索排名提升
  • 网站后台模板北京网络营销方案
  • 网站如何不被百度搜到浙江网站怎么做推广
  • 网站建设主机类型怎么选diy电子商城网站
  • 中文域名 怎么做网站门户网站建站系统
  • 网站上的个人词条怎么做的做网站推广有用吗
  • 定兴县住房和城乡建设局网站河南省新闻奖
  • 江西省建设工程协会网站查询郑州网站建设一汉狮网络
  • 网站是否含有seo收录功能素材下载平台网站源码
  • 西宁个人网站建设不错的网站建设
  • 海南综合网站两学一做电视夜校做网店网站
  • wordpress分类页面空白网站建设优化哪家好
  • 宁波模板建站哪家服务专业wordpress 神箭手
  • 一张图片网站代码视频生成链接在线工具
  • 网站品牌推广浙江手机版建站系统开发
  • 网站后台密码在哪个文件建站报价表
  • 昌乐营销型网站建设个人管理系统
  • 手机网站开发位置定位天津和平做网站公司
  • 搜搜提交网站入口国外wordpress空间
  • python 做网站 数据库做企业官网还有必要吗
  • 数据录入网站开发安阳县实验中学
  • 网站 风格镜子厂家东莞网站建设
  • 做网站策划需要用什么软件网站建设 好发信息网
  • wordpress网站优化pc建站 手机网站
  • 教研网站建设方案如何网上接单做设计
  • 魏县网站建设推广怎样做seo搜索引擎优化
  • 网站优化外链怎么做东莞公司注册流程及需要的材料
  • 做交通锁具网站拍摄广告片制作公司
  • 学院网站建设项目范围变更申请表建设工程公司名称大全