Skip to content

Instantly share code, notes, and snippets.

@purplefox
Created May 18, 2020 13:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save purplefox/82b37a9a7587c267fa4e4e19733722cc to your computer and use it in GitHub Desktop.
Save purplefox/82b37a9a7587c267fa4e4e19733722cc to your computer and use it in GitHub Desktop.
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
public class Main {
public static void main(String[] args) {
try {
new Main().doIt();
} catch (Exception e) {
e.printStackTrace();
}
}
private void doIt() throws Exception {
var tot = new AtomicLong();
var c = new AtomicLong();
List<Thread> threads = new ArrayList<>();
for (var i = 0; i < 5000000; i++) {
final long l = i;
Thread t = Thread.startVirtualThread(() -> {
long res = method1(l, l + 1, l + 2, l + 3);
tot.addAndGet(res);
c.incrementAndGet();
});
threads.add(t);
}
long start = System.currentTimeMillis();
while (System.currentTimeMillis() - start < 10000) {
printMemory();
Thread.sleep(1000);
}
System.out.println("Waiting for threads to complete");
for (Thread t: threads) {
t.join();
}
System.out.println("Threads complete");
System.out.println(tot.get());
System.out.println(c.get());
}
long method1(long l1, long l2, long l3, long l4) {
return method2(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method2(long l1, long l2, long l3, long l4) {
return method3(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method3(long l1, long l2, long l3, long l4) {
return method4(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method4(long l1, long l2, long l3, long l4) {
return method5(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method5(long l1, long l2, long l3, long l4) {
return method6(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method6(long l1, long l2, long l3, long l4) {
return method7(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method7(long l1, long l2, long l3, long l4) {
return method8(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method8(long l1, long l2, long l3, long l4) {
return method9(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method9(long l1, long l2, long l3, long l4) {
return method10(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method10(long l1, long l2, long l3, long l4) {
return method11(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method11(long l1, long l2, long l3, long l4) {
return method12(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method12(long l1, long l2, long l3, long l4) {
return method13(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method13(long l1, long l2, long l3, long l4) {
return method14(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method14(long l1, long l2, long l3, long l4) {
return method15(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method15(long l1, long l2, long l3, long l4) {
return method16(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method16(long l1, long l2, long l3, long l4) {
return method17(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method17(long l1, long l2, long l3, long l4) {
return method18(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method18(long l1, long l2, long l3, long l4) {
return method19(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method19(long l1, long l2, long l3, long l4) {
return method20(l1 + 1, l2 + 1, l3 + 1, l4 + 1) + l1 + l2 + l3 + l4;
}
long method20(long l1, long l2, long l3, long l4) {
try {
Thread.sleep(10000);
} catch (Exception e) {
e.printStackTrace();
}
return l1 + l2 + l3 + l4;
}
private void printMemory() {
System.out.println("Total memory: " + Runtime.getRuntime().totalMemory());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment