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

知名网站名称沈阳市网站设计公司大全

知名网站名称,沈阳市网站设计公司大全,seo博客网址,手机网站管理系统1 CountDownLatch#xff08;线程计数器 #xff09; CountDownLatch类位于java.util.concurrent 包下#xff0c;利用它可以实现类似计数器的功能。比如有一个任务 A#xff0c;它要等待其他 4 个任务执行完毕之后才能执行#xff0c;此时就可以利用 CountDownLatch 来实…1 CountDownLatch线程计数器 CountDownLatch类位于java.util.concurrent 包下利用它可以实现类似计数器的功能。比如有一个任务 A它要等待其他 4 个任务执行完毕之后才能执行此时就可以利用 CountDownLatch 来实现这种功能了。 2 CyclicBarrier回环栅栏-等待至 barrier 状态再全部同时执行 字面意思回环栅栏通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后CyclicBarrier 可以被重用。我们暂且把这个状态就叫做 barrier当调用 await()方法之后线程就处于 barrier 了。CyclicBarrier 中最重要的方法就是 await 方法它有 2 个重载版本 1public int await()用来挂起当前线程直至所有线程都到达 barrier 状态再同时执行后续任务public int await(long timeout, TimeUnit unit)让这些线程等待至一定的时间如果还有线程没有到达 barrier 状态就直接让到达 barrier 的线程执行后续任务。 具体使用如下另外 CyclicBarrier 是可以重用的。 3 Semaphore信号量-控制同时访问的线程个数 Semaphore 翻译成字面意思为 信号量Semaphore 可以控制同时访问的线程个数通过 acquire() 获取一个许可如果没有就等待而 release() 释放一个许可。Semaphore 类中比较重要的几个方法 1. public void acquire(): 用来获取一个许可若无许可能够获得则会一直等待直到获得许 可。 2. public void acquire(int permits):获取 permits 个许可 3. public void release() { } :释放许可。注意在释放许可之前必须先获获得许可。 4. public void release(int permits) { }:释放 permits 个许可上面 4 个方法都会被阻塞如果想立即得到执行结果可以使用下面几个方法 1. public boolean tryAcquire():尝试获取一个许可若获取成功则立即返回 true若获取失 败则立即返回 false 2. public boolean tryAcquire(long timeout, TimeUnit unit):尝试获取一个许可若在指定的 时间内获取成功则立即返回 true否则则立即返回 false 3. public boolean tryAcquire(int permits):尝试获取 permits 个许可若获取成功则立即返 回 true若获取失败则立即返回 false 4. public boolean tryAcquire(int permits, long timeout, TimeUnit unit): 尝试获取 permits 个许可若在指定的时间内获取成功则立即返回 true否则则立即返回 false 5. 还可以通过 availablePermits()方法得到可用的许可数目。 例子若一个工厂有5 台机器但是有8个工人一台机器同时只能被一个工人使用只有使用完 了其他工人才能继续使用。那么我们就可以通过 Semaphore 来实现 int N 8; //工人数 Semaphore semaphore new Semaphore(5); //机器数目 for(int i0;iN;i) new Worker(i,semaphore).start(); } static class Worker extends Thread{ private int num; private Semaphore semaphore; public Worker(int num,Semaphore semaphore){ this.num num; this.semaphore semaphore; } Override public void run() { try { semaphore.acquire(); System.out.println(工人this.num占用一个机器在生产...); Thread.sleep(2000); System.out.println(工人this.num释放出机器); semaphore.release(); } catch (InterruptedException e) { e.printStackTrace(); } } CountDownLatch 和 CyclicBarrier 都能够实现线程之间的等待只不过它们侧重点不同CountDownLatch 一般用于某个线程 A 等待若干个其他线程执行完任务之后它才执行而 CyclicBarrier 一般用于一组线程互相等待至某个状态然后这一组线程再同时执行另外CountDownLatch 是不能够重用的而 CyclicBarrier 是可以重用的。Semaphore 其实和锁有点类似它一般用于控制对某组资源的访问权限。 4 volatile 关键字的作用 关键字的作用变量可见性、禁止重排序  Java 语言提供了一种稍弱的同步机制即 volatile 变量用来确保将变量的更新操作通知到其他线程。volatile 变量具备两种特性volatile 变量不会被缓存在寄存器或者对其他处理器不可见的地方因此在读取 volatile 类型的变量时总会返回最新写入的值。变量可见性         其一是保证该变量对所有线程可见这里的可见性指的是当一个线程修改了变量的值那么新的值对于其他线程是可以立即获取的。禁止重排序 volatile 禁止了指令重排。比 sychronized 更轻量级的同步锁 在访问 volatile 变量时不会执行加锁操作因此也就不会使执行线程阻塞因此 volatile 变量是一种比 sychronized 关键字更轻量级的同步机制。volatile 适合这种场景一个变量被多个线程共享线程直接给这个变量赋值。 当对非 volatile 变量进行读写的时候每个线程先从内存拷贝变量到 CPU 缓存中。如果计算机有多个 CPU每个线程可能在不同的 CPU 上被处理这意味着每个线程可以拷贝到不同的 CPUcache 中。而声明变量是 volatile 的JVM 保证了每次读变量都从内存中读跳过 CPU cache这一步。适用场景         值得说明的是对 volatile 变量的单次读/写操作可以保证原子性的如 long 和 double 类型变量但是并不能保证 i这种操作的原子性因为本质上 i是读、写两次操作。在某些场景下可以代替 Synchronized。但是,volatile 的不能完全取代 Synchronized 的位置只有在一些特殊的场景下才能适用 volatile。总的来说必须同时满足下面两个条件才能保证在并发环境的线程安 全 1对变量的写操作不依赖于当前值比如 i或者说是单纯的变量赋值boolean flag true。 2该变量没有包含在具有其他变量的不变式中也就是说不同的 volatile 变量之间不 能互相依赖。只有在状态真正独立于程序内其他内容时才能使用 volatile。
http://wiki.neutronadmin.com/news/329651/

相关文章:

  • 网站域名地址查询国内用react做的网站
  • 网站做推广的企业宣传型网站
  • 做网站需要画原型图么室内设计师怎么考证
  • 自己造网站wordpress 清新主题
  • 七牛云可以做网站的存储空间吗东莞厚街做网站
  • 网站建站报告2000字智能网站建设设计
  • 内蒙古建设工程质监站网站在哪几个网站里做自媒体赚钱
  • 衡阳网站建设公司哪家好抖音小程序开发者平台
  • 福州建设企业网站软件开发工具排名
  • 给网站做图巩义网站建设方案报价
  • 建设企业网站报价网站开发设计费用
  • 做PHP网站前端网站进不去怎么在网站上做按钮
  • 做网站的时候旋转图片西安专业网站建设
  • 沈阳市建设局网站做竞价网站要准备什么条件
  • 做动态图的网站苏州无名网络科技有限公司
  • 网站seo诊断优化方案企业网络规划和设计方案
  • 国外数码印花图案设计网站新媒体营销与运营
  • wordpress底部自豪采用网站页面关键词优化
  • 完全自定义纯代码打造你的wordpress站点侧边栏室内装修公司排名
  • 门户网站与官网的区别做网站空间不给账号密码
  • 苏州吴中区做网站深圳市城乡和建设局网站
  • 合肥网站建设培训班WordPress高级投稿
  • 做网站好怎么做阿里巴巴国际网站首页
  • 企业网站备案需要法人拍照吗有经验的武进网站建设
  • 免费的室内设计网站app下载安装注册
  • 杭州建设局网站官网做财务还是网站运营
  • 微网站建设哪家优惠企业网站的作用和意义
  • 学校网站建设情况汇报深圳品牌床垫
  • 河南专业建网站应用商城app开发
  • 专业外贸制作网站网站建设技术解决方案