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

网上做兼职的网站免费建设网站平台

网上做兼职的网站,免费建设网站平台,app开发者需要更新,上海网站建设哪家便宜AtomicInteger属于Atomic Variables族。 主要好处是使用它不会阻塞而不是进行阻塞同步#xff0c;因此避免了线程的挂起和重新调度。 AtomicInteger基于“比较和交换”机制#xff0c;并且是原子变量的标量组的一部分。 我们的第一个用例是可以多次访问的网页上的功能。 pa… AtomicInteger属于Atomic Variables族。 主要好处是使用它不会阻塞而不是进行阻塞同步因此避免了线程的挂起和重新调度。 AtomicInteger基于“比较和交换”机制并且是原子变量的标量组的一部分。 我们的第一个用例是可以多次访问的网页上的功能。 package com.gkatzioura.concurrency; import java.util.concurrent.atomic.AtomicInteger; public class AtomicIntegerExample { private AtomicInteger atomicInteger new AtomicInteger(); public void serveRequest() { atomicInteger.incrementAndGet(); /** * logic */ } public int requestsServed() { return atomicInteger.get(); } } 并测试我们的用例 package com.gkatzioura.concurrency; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; public class AtomicIntegerExampleTest { private AtomicIntegerExample atomicIntegerExample; BeforeEach void setUp() { atomicIntegerExample new AtomicIntegerExample(); } Test void testConcurrentIncrementAndGet() throws ExecutionException, InterruptedException { final int threads 10 ; ExecutorService executorService Executors.newFixedThreadPool(threads); ListFuture futures new ArrayList(); for ( int i 0 ; i { atomicIntegerExample.serveRequest(); return null ; })); } for (Future future: futures) { future.get(); } Assertions.assertEquals( 10 ,atomicIntegerExample.requestsServed()); } } 除了使用原子整数作为计数器之外您还可以在各种情况下使用它。 例如线程安全的循环算法。 package com.gkatzioura.concurrency; import java.util.concurrent.atomic.AtomicInteger; public class AtomicIntegerRoundRobin { private final int totalIndexes; private final AtomicInteger atomicInteger new AtomicInteger(- 1 ); public AtomicIntegerRoundRobin( int totalIndexes) { this .totalIndexes totalIndexes; } public int index() { int currentIndex; int nextIndex; do { currentIndex atomicInteger.get(); nextIndex currentIndex Integer.MAX_VALUE ? currentIndex nextIndex currentIndex Integer.MAX_VALUE ? currentIndex 1 : 0 ; } while (!atomicInteger.compareAndSet(currentIndex, nextIndex)); return nextIndex % totalIndexes; } } totalIndex是索引的总数。 当请求下一个索引的请求时计数器将增加并进行比较和设置操作。 如果由于另一个线程而失败则它将再次尝试该操作并将获得计数器的下一个值。 模运算将给出当前索引。 如果原子整数达到最大值则应将其重置为零。 重置会导致边缘情况并更改索引的顺序。 如果这是一个问题则可以根据总索引大小来调整最大值以避免这种情况。 还对此进行了一些测试。 package com.gkatzioura.concurrency; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; AtomicIntegerRoundRobinTest { class AtomicIntegerRoundRobinTest { private static final int MAX_INDEX 10 ; private AtomicIntegerRoundRobin atomicIntegerRoundRobin; BeforeEach void setUp() { atomicIntegerRoundRobin new AtomicIntegerRoundRobin(MAX_INDEX); } Test void testIndexesSerially() { for ( long i 0 ;iMAX_INDEX* 20 ;i) { System.out.println(atomicIntegerRoundRobin.index()); } Assertions.assertEquals( 0 , atomicIntegerRoundRobin.index()); } Test void testIndexesConcurrently() throws ExecutionException, InterruptedException { ExecutorService executorService Executors.newFixedThreadPool( 4 ); ListFuture futures new ArrayList(); for ( int i 0 ; i atomicIntegerRoundRobin.index())); } for (Future future: futures) { System.out.println(future.get()); } Assertions.assertEquals( 0 ,atomicIntegerRoundRobin.index()); } } 翻译自: https://www.javacodegeeks.com/2019/11/atomicinteger-on-java-and-round-robin.html
http://www.yutouwan.com/news/492818/

相关文章:

  • 广州做网站哪个平台好遵义做手机网站建设
  • 做网站开发学什么语言好wordpress 等待响应
  • 阿里巴巴网站怎么做全屏分类淄博网站建设费用
  • 加盟网官方网站域名查询ip解析
  • 建站公司上海有什么平台可以销售产品
  • 如何选择网站模板购买seo关键词排名优化官网
  • 网站首页改版方案湖南长沙房价2023年最新房价
  • 优秀网站网址江西网站设计哪家强
  • 北京市优化网站wordpress安装程序
  • 上杭县城乡规划建设局网站河北招投标信息服务平台
  • 网站开发的硬件环境要求南昌网站seo外包
  • 网站界面设计分析网站如何做企业电子宣传册
  • 怎么做定位钓鱼网站建设银行手机银行app类型
  • 网站搭建服务器需要什么小程序如何注册步骤
  • 小企业网站建设服务西安平面设计培训学校哪个好
  • 达州北京网站建设学交互设计网站
  • 网站备案被取消黑龙江省建设集团有限公司网站
  • 本溪网站开发网站建设一般的费用
  • wordpress+js插件开发教程企业网站排名优化公司
  • 2网站制作开发公司项目总是分公司总经理吗
  • 固原网站建设wordpress php mysql
  • 现在流行用什么语言做网站设计参考网站有哪些
  • 沛县做网站查找网站注册时间
  • 企业的网站开发费用如何入账专题网站设计
  • php做网站好学吗中文在线っと好きだっ
  • 廊坊市固安县建设局网站邯郸市网络建站
  • 专业酒店设计网站建设建筑工人找活平台
  • 制作个人网站素材知乎关键词搜索排名
  • 天长网站制作做网站创业故事
  • 6做网站腾讯企业邮箱登录入口手机版