org.jruby.RubyHash.concurrentModification()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(7.8k)|赞(0)|评价(0)|浏览(109)

本文整理了Java中org.jruby.RubyHash.concurrentModification方法的一些代码示例,展示了RubyHash.concurrentModification的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RubyHash.concurrentModification方法的具体详情如下:
包路径:org.jruby.RubyHash
类名称:RubyHash
方法名:concurrentModification

RubyHash.concurrentModification介绍

暂无

代码示例

代码示例来源:origin: org.jruby/jruby-complete

private <T> void visitLimited(ThreadContext context, VisitorWithState visitor, long size, T state) {
  int startGeneration = generation;
  long count = size;
  int index = 0;
  // visit not more than size entries
  for (RubyHashEntry entry = head.nextAdded; entry != head && count != 0; entry = entry.nextAdded) {
    if (startGeneration != generation) {
      startGeneration = generation;
      entry = head.nextAdded;
      if (entry == head) break;
    }
    if (entry != null && entry.isLive()) {
      visitor.visit(context, this, entry.key, entry.value, index++, state);
      count--;
    }
  }
  // it does not handle all concurrent modification cases,
  // but at least provides correct marshal as we have exactly size entries visited (count == 0)
  // or if count < 0 - skipped concurrent modification checks
  if (count > 0) throw concurrentModification();
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

private void visitLimited(Visitor visitor, long size) {
  int startGeneration = generation;
  long count = size;
  // visit not more than size entries
  for (RubyHashEntry entry = head.nextAdded; entry != head && count != 0; entry = entry.nextAdded) {
    if (startGeneration != generation) {
      startGeneration = generation;
      entry = head.nextAdded;
      if (entry == head) break;
    }
    if (entry != null && entry.isLive()) {
      visitor.visit(entry.key, entry.value);
      count--;
    }
  }
  // it does not handle all concurrent modification cases,
  // but at least provides correct marshal as we have exactly size entries visited (count == 0)
  // or if count < 0 - skipped concurrent modification checks
  if (count > 0) throw concurrentModification();
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

private void visitLimited(Visitor visitor, long size) {
  int startGeneration = generation;
  long count = size;
  // visit not more than size entries
  for (RubyHashEntry entry = head.nextAdded; entry != head && count != 0; entry = entry.nextAdded) {
    if (startGeneration != generation) {
      startGeneration = generation;
      entry = head.nextAdded;
      if (entry == head) break;
    }
    if (entry != null && entry.isLive()) {
      visitor.visit(entry.key, entry.value);
      count--;
    }
  }
  // it does not handle all concurrent modification cases,
  // but at least provides correct marshal as we have exactly size entries visited (count == 0)
  // or if count < 0 - skipped concurrent modification checks
  if (count > 0) throw concurrentModification();
}

代码示例来源:origin: org.jruby/jruby-core

private <T> void visitLimited(ThreadContext context, VisitorWithState visitor, long size, T state) {
  int startGeneration = generation;
  long count = size;
  int index = 0;
  // visit not more than size entries
  for (RubyHashEntry entry = head.nextAdded; entry != head && count != 0; entry = entry.nextAdded) {
    if (startGeneration != generation) {
      startGeneration = generation;
      entry = head.nextAdded;
      if (entry == head) break;
    }
    if (entry != null && entry.isLive()) {
      visitor.visit(context, this, entry.key, entry.value, index++, state);
      count--;
    }
  }
  // it does not handle all concurrent modification cases,
  // but at least provides correct marshal as we have exactly size entries visited (count == 0)
  // or if count < 0 - skipped concurrent modification checks
  if (count > 0) throw concurrentModification();
}

代码示例来源:origin: org.jruby/jruby-complete

/** rb_hash_keys
 *
 */
@JRubyMethod(name = "keys")
public RubyArray keys(final ThreadContext context) {
  try {
    RubyArray keys = RubyArray.newBlankArray(context.runtime, size);
    visitAll(context, StoreKeyVisitor, keys);
    return keys;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

代码示例来源:origin: org.jruby/jruby-core

/** rb_hash_values
 *
 */
@JRubyMethod(name = "values")
public RubyArray values(final ThreadContext context) {
  try {
    RubyArray values = RubyArray.newBlankArray(context.runtime, size);
    visitAll(context, StoreValueVisitor, values);
    return values;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

代码示例来源:origin: org.jruby/jruby-complete

/** rb_hash_values
 *
 */
@JRubyMethod(name = "values")
public RubyArray values(final ThreadContext context) {
  try {
    RubyArray values = RubyArray.newBlankArray(context.runtime, size);
    visitAll(context, StoreValueVisitor, values);
    return values;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

代码示例来源:origin: org.jruby/jruby-core

/** rb_hash_keys
 *
 */
@JRubyMethod(name = "keys")
public RubyArray keys(final ThreadContext context) {
  try {
    RubyArray keys = RubyArray.newBlankArray(context.runtime, size);
    visitAll(context, StoreKeyVisitor, keys);
    return keys;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

/** rb_hash_values
 *
 */
@JRubyMethod(name = "values")
public RubyArray rb_values() {
  try {
    final RubyArray values = RubyArray.newArray(getRuntime(), size);
    visitAll(new Visitor() {
      public void visit(IRubyObject key, IRubyObject value) {
        values.append(value);
      }
    });
    return values;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

/** rb_hash_keys
 *
 */
@JRubyMethod(name = "keys")
public RubyArray keys() {
  final Ruby runtime = getRuntime();
  try {
    final RubyArray keys = RubyArray.newArray(runtime, size);
    visitAll(new Visitor() {
      public void visit(IRubyObject key, IRubyObject value) {
        keys.append(key);
      }
    });
    return keys;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

/** rb_hash_keys
 *
 */
@JRubyMethod(name = "keys")
public RubyArray keys() {
  final Ruby runtime = getRuntime();
  try {
    final RubyArray keys = RubyArray.newArray(runtime, size);
    visitAll(new Visitor() {
      public void visit(IRubyObject key, IRubyObject value) {
        keys.append(key);
      }
    });
    return keys;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

/** rb_hash_values
 *
 */
@JRubyMethod(name = "values")
public RubyArray rb_values() {
  try {
    final RubyArray values = RubyArray.newArray(getRuntime(), size);
    visitAll(new Visitor() {
      public void visit(IRubyObject key, IRubyObject value) {
        values.append(value);
      }
    });
    return values;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

/** rb_hash_to_a
 *
 */
@JRubyMethod(name = "to_a")
@Override
public RubyArray to_a() {
  final Ruby runtime = getRuntime();
  try {
    final RubyArray result = RubyArray.newArray(runtime, size);
    visitAll(new Visitor() {
      public void visit(IRubyObject key, IRubyObject value) {
        result.append(RubyArray.newArray(runtime, key, value));
      }
    });
    result.setTaint(isTaint());
    return result;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

/** rb_hash_to_a
 *
 */
@JRubyMethod(name = "to_a")
@Override
public RubyArray to_a() {
  final Ruby runtime = getRuntime();
  try {
    final RubyArray result = RubyArray.newArray(runtime, size);
    visitAll(new Visitor() {
      public void visit(IRubyObject key, IRubyObject value) {
        result.append(RubyArray.newArray(runtime, key, value));
      }
    });
    result.setTaint(isTaint());
    return result;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

代码示例来源:origin: org.jruby/jruby-complete

/** rb_hash_to_a
 *
 */
@JRubyMethod(name = "to_a")
@Override
public RubyArray to_a() {
  final Ruby runtime = getRuntime();
  try {
    final RubyArray result = RubyArray.newBlankArray(runtime, size);
    visitAll(runtime.getCurrentContext(), RubyHash.StoreKeyValueVisitor, result);
    result.setTaint(isTaint());
    return result;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

代码示例来源:origin: org.jruby/jruby-core

/** rb_hash_to_a
 *
 */
@JRubyMethod(name = "to_a")
@Override
public RubyArray to_a() {
  final Ruby runtime = getRuntime();
  try {
    final RubyArray result = RubyArray.newBlankArray(runtime, size);
    visitAll(runtime.getCurrentContext(), RubyHash.StoreKeyValueVisitor, result);
    result.setTaint(isTaint());
    return result;
  } catch (NegativeArraySizeException nase) {
    throw concurrentModification();
  }
}

相关文章

微信公众号

最新文章

更多

RubyHash类方法