You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "chenxiaojie (JIRA)" <ji...@apache.org> on 2018/06/20 06:35:00 UTC
[jira] [Updated] (GROOVY-8653) foreach index value error
[ https://issues.apache.org/jira/browse/GROOVY-8653?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
chenxiaojie updated GROOVY-8653:
--------------------------------
Description:
{code:java}
ConcurrentHashMap<Integer, AtomicInteger> map = new ConcurrentHashMap<Integer, AtomicInteger>(10000)
ConcurrentHashMap<Integer, AtomicInteger> map2 = new ConcurrentHashMap<Integer, AtomicInteger>(10000)
ConcurrentHashMap<Integer, AtomicInteger> map3 = new ConcurrentHashMap<Integer, AtomicInteger>(10000)
ExecutorService es = Executors.newFixedThreadPool(100)
1.upto(10000) {
i ->
es.execute {
AtomicInteger count = map.get(i)
if (count == null) {
count = new AtomicInteger(0)
AtomicInteger oldCount = map.putIfAbsent(i, count)
if (oldCount != null) {
count = oldCount
}
}
count.incrementAndGet()
}
}
for (Integer i = 0; i < 10000; i++) {
es.execute {
AtomicInteger count = map2.get(i)
if (count == null) {
count = new AtomicInteger(0)
AtomicInteger oldCount = map2.putIfAbsent(i, count)
if (oldCount != null) {
count = oldCount
}
}
count.incrementAndGet()
}
}
for (Integer i = 0; i < 10000; i++) {
Integer j = i
es.execute {
AtomicInteger count = map3.get(j)
if (count == null) {
count = new AtomicInteger(0)
AtomicInteger oldCount = map3.putIfAbsent(j, count)
if (oldCount != null) {
count = oldCount
}
}
count.incrementAndGet()
}
}
es.shutdown()
es.awaitTermination(1, TimeUnit.MINUTES)
// println 10000
println map.size()
// println 6583 ??? size is 0-10000 integer
println map2.size()
// println 10000
println map3.size()
{code}
was:
{code:java}
ConcurrentHashMap<Integer, AtomicInteger> map = new ConcurrentHashMap<Integer, AtomicInteger>(10000)
ConcurrentHashMap<Integer, AtomicInteger> map2 = new ConcurrentHashMap<Integer, AtomicInteger>(10000)
ConcurrentHashMap<Integer, AtomicInteger> map3 = new ConcurrentHashMap<Integer, AtomicInteger>(10000)
ExecutorService es = Executors.newFixedThreadPool(100)
1.upto(10000) {
i ->
es.execute {
AtomicInteger count = map.get(i)
if (count == null) {
count = new AtomicInteger(0)
AtomicInteger oldCount = map.putIfAbsent(i, count)
if (oldCount != null) {
count = oldCount
}
}
count.incrementAndGet()
}
}
for (Integer i = 0; i < 10000; i++) {
es.execute {
AtomicInteger count = map2.get(i)
if (count == null) {
count = new AtomicInteger(0)
AtomicInteger oldCount = map2.putIfAbsent(i, count)
if (oldCount != null) {
count = oldCount
}
}
count.incrementAndGet()
}
}
for (Integer i = 0; i < 10000; i++) {
Integer j = i
es.execute {
AtomicInteger count = map3.get(j)
if (count == null) {
count = new AtomicInteger(0)
AtomicInteger oldCount = map3.putIfAbsent(j, count)
if (oldCount != null) {
count = oldCount
}
}
count.incrementAndGet()
}
}
es.shutdown()
es.awaitTermination(1, TimeUnit.MINUTES)
// println 10000
println map.size()
{color:red}// println 6583 ??? size is 0-10000 integer
println map2.size(){color}
// println 10000
println map3.size()
{code}
> foreach index value error
> -------------------------
>
> Key: GROOVY-8653
> URL: https://issues.apache.org/jira/browse/GROOVY-8653
> Project: Groovy
> Issue Type: Bug
> Components: Groovy Console, groovy-jdk
> Affects Versions: 2.3.7, 2.4.15
> Environment: jdk1.7.0_79
> Reporter: chenxiaojie
> Priority: Major
> Original Estimate: 12h
> Remaining Estimate: 12h
>
> {code:java}
> ConcurrentHashMap<Integer, AtomicInteger> map = new ConcurrentHashMap<Integer, AtomicInteger>(10000)
> ConcurrentHashMap<Integer, AtomicInteger> map2 = new ConcurrentHashMap<Integer, AtomicInteger>(10000)
> ConcurrentHashMap<Integer, AtomicInteger> map3 = new ConcurrentHashMap<Integer, AtomicInteger>(10000)
> ExecutorService es = Executors.newFixedThreadPool(100)
> 1.upto(10000) {
> i ->
> es.execute {
> AtomicInteger count = map.get(i)
> if (count == null) {
> count = new AtomicInteger(0)
> AtomicInteger oldCount = map.putIfAbsent(i, count)
> if (oldCount != null) {
> count = oldCount
> }
> }
> count.incrementAndGet()
> }
> }
> for (Integer i = 0; i < 10000; i++) {
> es.execute {
> AtomicInteger count = map2.get(i)
> if (count == null) {
> count = new AtomicInteger(0)
> AtomicInteger oldCount = map2.putIfAbsent(i, count)
> if (oldCount != null) {
> count = oldCount
> }
> }
> count.incrementAndGet()
> }
> }
> for (Integer i = 0; i < 10000; i++) {
> Integer j = i
> es.execute {
> AtomicInteger count = map3.get(j)
> if (count == null) {
> count = new AtomicInteger(0)
> AtomicInteger oldCount = map3.putIfAbsent(j, count)
> if (oldCount != null) {
> count = oldCount
> }
> }
> count.incrementAndGet()
> }
> }
> es.shutdown()
> es.awaitTermination(1, TimeUnit.MINUTES)
> // println 10000
> println map.size()
> // println 6583 ??? size is 0-10000 integer
> println map2.size()
> // println 10000
> println map3.size()
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)