有人说go比较高级,无非是说go语言比java多了用户态的纤程。目前java原生jdk到了JDK14,还没有支持,不过我相信以后肯定会支持的。目前只能通过三方jar包(Quasar)的形式来支持。
那就提前感受下纤程的威力吧。话不多说,直接上测试结果,大家自行感受其威力!!!
1.多线程。
/**
* @Auther Micky
* @Date 2020-10-25 11:35
* <p>
* 4个cpu,8G内存, i7处理器,Windows10系统
* 线程和纤程的区别
* 先做单线程无纤程的。
* cost time is 2056 ms
* cost time is 3871 ms
* cost time is 2878 ms
* cost time is 3414 ms
* cost time is 3462 ms
*/
public class ThreadOnlyTest {
public static void main(String[] args) throws Exception {
long startTime = System.currentTimeMillis();
int size = 10000;
CountDownLatch countDownLatch = new CountDownLatch(size);
Thread[] ThreadArray = new Thread[size];
for (int i = 0; i < ThreadArray.length; i++) {
ThreadArray[i] = new Thread(() -> {
calc();
countDownLatch.countDown();
});
}
for (int i = 0; i < ThreadArray.length; i++) {
ThreadArray[i].start();
}
countDownLatch.await();
System.out.println("cost time is " + (System.currentTimeMillis() - startTime) + " ms");
}
private static void calc() {
int result = 0;
for (int i = 0; i < 10000; i++) {
for (int i1 = 0; i1 < 1000; i1++) {
result += i1;
}
}
}
}