在多线程环境中,当多个线程同时引用一个类时,JVM是否最终会多次加载该类?
如果没有,同步如何发生?
我们计划将我们的项目从 java 8(当前在 tomcat 7 上运行)迁移到 java 11,因为 rt.jar 文件不再可用,并且 tomcat 启动需要sun.misc包中的类,例如sun.misc.GC. 此外,我们的应用程序使用javax.xml.ws.WebServiceFeature. 我们没有收到任何消息java.lang.NoClassDefFoundError,应用程序无法启动。如何在 java 11 中解决此依赖关系?
请考虑以下代码段.
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
List<String> copyList = new ArrayList<String>();
Consumer<String> consumer = s->copyList.add(s);
list.stream().forEach(consumer);
Run Code Online (Sandbox Code Playgroud)
由于我们使用lambda表达式,根据函数式编程(纯函数),它应该只计算输入并提供相应的输出.
但是在这个示例中,它试图将元素添加到列表中,既不是输入也不是在lambda范围内声明.
这是一个很好的做法,我的意思是,导致任何副作用?
我们计划将 tomcat 服务器(我们当前使用的版本是 7)迁移到版本 9,目前我们正在使用 VirtualWebAppLoader 类来创建自定义类路径,即从外部文件夹加载 jars。但是在 Tomcat 9 中,这个加载器类不再可用。如何在 tomcat 9 中实现这一目标?
java ×3
classloader ×2
java-8 ×2
classpath ×1
concurrency ×1
java-11 ×1
rt.jar ×1
tomcat ×1
tomcat7 ×1