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

php网站上传教程中国石油工程建设协会网站

php网站上传教程,中国石油工程建设协会网站,无限免费视频在线看,办公用品网站建设我需要一个字节生成器,它将生成从Byte.MIN_VALUE到Byte.MAX_VALUE的值.当它达到MAX_VALUE时,它应该从MIN_VALUE重新开始.我使用AtomicInteger编写了代码(见下文);但是,如果同时访问并且如果使用Thread.sleep()人为地减慢了代码,那么代码似乎没有正常运行(如果没有睡眠,它运行正…我需要一个字节生成器,它将生成从Byte.MIN_VALUE到Byte.MAX_VALUE的值.当它达到MAX_VALUE时,它应该从MIN_VALUE重新开始.我使用AtomicInteger编写了代码(见下文);但是,如果同时访问并且如果使用Thread.sleep()人为地减慢了代码,那么代码似乎没有正常运行(如果没有睡眠,它运行正常;但是,我怀疑它对于出现并发问题来说太快了).代码(添加了一些调试代码)public class ByteGenerator {private static final int INITIAL_VALUE Byte.MIN_VALUE-1;private AtomicInteger counter new AtomicInteger(INITIAL_VALUE);private AtomicInteger resetCounter new AtomicInteger(0);private boolean isSlow false;private long startTime;public byte nextValue() {int next counter.incrementAndGet();//if (isSlow) slowDown(5);if (next Byte.MAX_VALUE) {synchronized(counter) {int i counter.get();//if value is still larger than max byte value,we reset itif (i Byte.MAX_VALUE) {counter.set(INITIAL_VALUE);resetCounter.incrementAndGet();if (isSlow) slowDownAndLog(10,resetting);} else {if (isSlow) slowDownAndLog(1,missed);}next counter.incrementAndGet();}}return (byte) next;}private void slowDown(long millis) {try {Thread.sleep(millis);} catch (InterruptedException e) {}}private void slowDownAndLog(long millis,String msg) {slowDown(millis);System.out.println(resetCounter (System.currentTimeMillis()-startTime) Thread.currentThread().getName() : msg);}public void setSlow(boolean isSlow) {this.isSlow isSlow;}public void setStartTime(long startTime) {this.startTime startTime;}}并且,测试public class ByteGeneratorTest {Testpublic void testGenerate() throws Exception {ByteGenerator g new ByteGenerator();for (int n 0; n 10; n) {for (int i Byte.MIN_VALUE; i Byte.MAX_VALUE; i) {assertEquals(i,g.nextValue());}}}Testpublic void testGenerateMultiThreaded() throws Exception {final ByteGenerator g new ByteGenerator();g.setSlow(true);final AtomicInteger[] counters new AtomicInteger[Byte.MAX_VALUE-Byte.MIN_VALUE1];for (int i 0; i counters.length; i) {counters[i] new AtomicInteger(0);}Thread[] threads new Thread[100];final CountDownLatch latch new CountDownLatch(threads.length);for (int i 0; i threads.length; i) {threads[i] new Thread(new Runnable() {public void run() {try {for (int i Byte.MIN_VALUE; i Byte.MAX_VALUE; i) {byte value g.nextValue();counters[value-Byte.MIN_VALUE].incrementAndGet();}} finally {latch.countDown();}}},generator-client- i);threads[i].setDaemon(true);}g.setStartTime(System.currentTimeMillis());for (int i 0; i threads.length; i) {threads[i].start();}latch.await();for (int i 0; i counters.length; i) {System.out.println(value # (iByte.MIN_VALUE) : counters[i].get());}//print out the number of hits for each valuefor (int i 0; i counters.length; i) {assertEquals(value # (iByte.MIN_VALUE),threads.length,counters[i].get());}}}在我的2核机器上的结果是值#-128得到146次点击(所有这些都应该得到100次点击,因为我们有100个线程).如果有人有任何想法,这个代码有什么问题,我都是耳朵/眼睛.更新对于那些赶时间并且不想向下滚动的人来说,在Java中解决这个问题的正确(以及最短和最优雅)方式将是这样的public byte nextValue() {return (byte) counter.incrementAndGet();}谢谢,亨氏
http://www.huolong8.cn/news/15520/

相关文章:

  • 网站设计建设定制网页设计表格模板源代码
  • 学校信息化网站建设小型购物网站开发
  • 老河口网站建设南部县房产网
  • 做网站用什么配置的电脑云南推广
  • 网站开发小程序定制北京网站建设公司 蓝纤科技
  • 阿里云如何建立网站wordpress版08影院
  • 域名已有服务器也有怎么做网站岐山县住房和城市建设局网站
  • 做网站seo优化总结wordpress 图片cms主题
  • 建设电子商务网站需要什么设备wordpress文章无法中文
  • 医院网站建设iis7.5网站权限配置
  • php网站架设教程wordpress多用户编辑wiki
  • 深圳网站建设 外包合作wordpress代码乱吗
  • 手机wap网站制作需要多少钱常熟建设银行 招聘网站
  • wordpress做的网站吗网站制作的订单
  • 江门网站推广策划千锋教育前端培训
  • 响应式网站生成网页生成微信小程序
  • 青岛网站开发建设wordpress调用指定相关文章
  • 石家庄手机网站建设织梦网站背景音乐
  • 网站建设营销推广实训总结南宁上林网站建设
  • 爱搜索中级网站建设建设网站技术公司
  • 济南网站建设 济南货梯西安找工作哪个网站好
  • 做大型网站建设北京商场推荐
  • 安徽阜阳网站建设微信商城和网站建设
  • 南宁网站建设找建站通网站落地页怎么做
  • 人才网站建设方案做网站gzip压缩
  • 微网站内页百度推广下载安装
  • 坪洲网站建设泉州软件开发制作
  • 包装设计接单网站WordPress服务器应用镜像
  • 文山北京网站建设最好的国际贸易网站
  • 阿里巴巴国际站官网首页郑州快速建站模板