java进程之间如何共享数据 java中如何模拟真正的同时并发请求?

[更新]
·
·
分类:互联网
3863 阅读

java进程之间如何共享数据

java中如何模拟真正的同时并发请求?

java中如何模拟真正的同时并发请求?

如果不是多核的主机,同一时刻实际只有一个进程被执行。但是由于计算机速度快,比如1s可以切换调度执行多个进程或者线程达到并行不阻塞的效果。你希望的那种真并发,用多核的主机开线程实际上就可以实现。但是也不能做到所有时刻全部cpu都在执行发送请求的动作。实际应用场景中,大部分情况达到并行的效果应该就满足需求了,没有要过于强调同一时刻执行。比如压力测试,开启1000或者更多个线程去请求对应被压测的接口。也并不是一个时刻发起的,而是比如1s这种时间段。

jdk13是什么?

目前,JDK13处于Release-Candidate Phase(发布候选阶段),将于9月17日正式发布。目前该版本包含的特性已经全部固定,主要包含以下五个:
JEP 350,Dynamic CDS ArchivesJEP 351,ZGC: Uncommit Unused MemoryJEP 353,Reimplement the Legacy Socket APIJEP 354: Switch Expressions (Preview)JEP 355,Text Blocks (Preview)
下面来逐一介绍下这五个重要的特性。
Dynamic CDS Archives
这一特性是在JEP310:Application Class-Data Sharing基础上扩展而来的,Dynamic CDS Archives中的CDS指的就是Class-Data Sharing。
那么,这个JEP310是个啥东西呢?
我们知道在同一个物理机/虚拟机上启动多个JVM时,如果每个虚拟机都单独装载自己需要的所有类,启动成本和内存占用是比较高的。所以Java团队引入了CDS的概念,通过把一些核心类在每个JVM间共享,每个JVM只需要装载自己的应用类,启动时间减少了,另外核心类是共享的,所以JVM的内存占用也减少了。
CDS 只能作用于 Boot Class Loader 加载的类,不能作用于 App Class Loader 或者自定义的 Class Loader 加载的类。
在 Java 10 中,则将 CDS 扩展为 AppCDS,顾名思义,AppCDS 不止能够作用于 Boot Class Loader了,App Class Loader 和自定义的 Class Loader 也都能够起作用,大大加大了 CDS 的适用范围。也就说开发自定义的类也可以装载给多个JVM共享了。
Java 10中包含的JEP310的通过跨不同Java进程共享公共类元数据来减少了内存占用和改进了启动时间。
但是,JEP310中,使用AppCDS的过程还是比较复杂的,需要有三个步骤:
1、决定要 Dump 哪些 Class
2、将类的内存 Dump 到归档文件中
3、使用 Dump 出来的归档文件加快应用启动速度
这一次的JDK 13中的JEP 350 ,在JEP310的基础上,又做了一些扩展。允许在Java应用程序执行结束时动态归档类,归档类将包括默认的基础层 CDS(class data-sharing)存档中不存在的所有已加载的应用程序类和库类。