mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-08-17 04:27:13 +00:00
test[protocol]: map test
This commit is contained in:
@@ -66,147 +66,156 @@ public class ConcurrentTesting {
|
||||
Assert.assertTrue(map.isEmpty());
|
||||
}
|
||||
|
||||
public static final int num = 100_0000;
|
||||
public static final int maxCount = 10;
|
||||
|
||||
@Test
|
||||
public void concurrentPrimitiveTest() throws InterruptedException {
|
||||
var map = new ConcurrentHashMapLongObject<Integer>();
|
||||
var num = 1_000_0000;
|
||||
var map = new ConcurrentHashMapLongObject<Integer>(128);
|
||||
var startTime = System.currentTimeMillis();
|
||||
|
||||
var countDownLatch = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.put(j, j);
|
||||
for (int count = 0; count < maxCount; count++) {
|
||||
var countDownLatch = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.put(j, j);
|
||||
}
|
||||
map.forEachPrimitive(it -> it.value());
|
||||
countDownLatch.countDown();
|
||||
}
|
||||
map.forEachPrimitive(it -> it.value());
|
||||
countDownLatch.countDown();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
countDownLatch.await();
|
||||
Assert.assertEquals(map.size(), num);
|
||||
}).start();
|
||||
}
|
||||
countDownLatch.await();
|
||||
Assert.assertEquals(map.size(), num);
|
||||
|
||||
var countDownLatch2 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.remove((long) j);
|
||||
var countDownLatch2 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
var value = (int) map.get((long) j);
|
||||
Assert.assertEquals(value, j);
|
||||
}
|
||||
map.forEachPrimitive(it -> it.value());
|
||||
countDownLatch2.countDown();
|
||||
}
|
||||
map.forEachPrimitive(it -> it.value());
|
||||
countDownLatch2.countDown();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
countDownLatch2.await();
|
||||
Assert.assertTrue(map.isEmpty());
|
||||
}).start();
|
||||
}
|
||||
countDownLatch2.await();
|
||||
|
||||
var countDownLatch3 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.put(j, j);
|
||||
var countDownLatch3 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.put(j, j);
|
||||
}
|
||||
map.forEachPrimitive(it -> it.value());
|
||||
countDownLatch3.countDown();
|
||||
}
|
||||
map.forEachPrimitive(it -> it.value());
|
||||
countDownLatch3.countDown();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
countDownLatch3.await();
|
||||
Assert.assertEquals(map.size(), num);
|
||||
}).start();
|
||||
}
|
||||
countDownLatch3.await();
|
||||
|
||||
var countDownLatch4 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.remove((long) j);
|
||||
var countDownLatch4 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.remove((long) j);
|
||||
}
|
||||
map.forEachPrimitive(it -> it.value());
|
||||
countDownLatch4.countDown();
|
||||
}
|
||||
map.forEachPrimitive(it -> it.value());
|
||||
countDownLatch4.countDown();
|
||||
}
|
||||
}).start();
|
||||
}).start();
|
||||
}
|
||||
countDownLatch4.await();
|
||||
Assert.assertTrue(map.isEmpty());
|
||||
}
|
||||
countDownLatch4.await();
|
||||
Assert.assertTrue(map.isEmpty());
|
||||
|
||||
System.out.println(System.currentTimeMillis() - startTime);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void concurrentTest() throws InterruptedException {
|
||||
var map = new ConcurrentHashMap<Long, Integer>();
|
||||
var num = 1_000_0000;
|
||||
var startTime = System.currentTimeMillis();
|
||||
|
||||
var countDownLatch = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.put((long) j, j);
|
||||
for (int count = 0; count < maxCount; count++) {
|
||||
var countDownLatch = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.put((long) j, j);
|
||||
}
|
||||
map.forEach((key, value) -> {
|
||||
});
|
||||
countDownLatch.countDown();
|
||||
}
|
||||
map.forEach((key, value) -> {});
|
||||
countDownLatch.countDown();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
countDownLatch.await();
|
||||
Assert.assertEquals(map.size(), num);
|
||||
}).start();
|
||||
}
|
||||
countDownLatch.await();
|
||||
Assert.assertEquals(map.size(), num);
|
||||
|
||||
var countDownLatch2 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.remove((long) j);
|
||||
var countDownLatch2 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
var value = (int) map.get((long) j);
|
||||
Assert.assertEquals(value, j);
|
||||
}
|
||||
map.forEach((key, value) -> {
|
||||
});
|
||||
countDownLatch2.countDown();
|
||||
}
|
||||
map.forEach((key, value) -> {});
|
||||
countDownLatch2.countDown();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
countDownLatch2.await();
|
||||
Assert.assertTrue(map.isEmpty());
|
||||
}).start();
|
||||
}
|
||||
countDownLatch2.await();
|
||||
|
||||
var countDownLatch3 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.put((long) j, j);
|
||||
var countDownLatch3 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.put((long) j, j);
|
||||
}
|
||||
map.forEach((key, value) -> {
|
||||
});
|
||||
countDownLatch3.countDown();
|
||||
}
|
||||
map.forEach((key, value) -> {});
|
||||
countDownLatch3.countDown();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
countDownLatch3.await();
|
||||
Assert.assertEquals(map.size(), num);
|
||||
}).start();
|
||||
}
|
||||
countDownLatch3.await();
|
||||
|
||||
var countDownLatch4 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.remove((long) j);
|
||||
var countDownLatch4 = new CountDownLatch(EXECUTOR_SIZE);
|
||||
for (var i = 0; i < EXECUTOR_SIZE; i++) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int j = 0; j < num; j++) {
|
||||
map.remove((long) j);
|
||||
}
|
||||
map.forEach((key, value) -> {
|
||||
});
|
||||
countDownLatch4.countDown();
|
||||
}
|
||||
map.forEach((key, value) -> {});
|
||||
countDownLatch4.countDown();
|
||||
}
|
||||
}).start();
|
||||
}).start();
|
||||
}
|
||||
countDownLatch4.await();
|
||||
Assert.assertTrue(map.isEmpty());
|
||||
}
|
||||
countDownLatch4.await();
|
||||
Assert.assertTrue(map.isEmpty());
|
||||
|
||||
System.out.println(System.currentTimeMillis() - startTime);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user