我有聊天服务器应用程序,我们将在 3 个服务器上部署它。聊天应用程序使用了大量的多线程。
基本上我必须决定我应该为这 3 台服务器使用哪个操作系统。所以我想知道linux和windows如何独特地处理java线程。有什么区别?谁创建操作系统线程?他们分配了什么内存?
如果将来范围可扩展性和集群化哪个选项更好?
我有聊天服务器应用程序,我们将在 3 个服务器上部署它。聊天应用程序使用了大量的多线程。
基本上我必须决定我应该为这 3 台服务器使用哪个操作系统。所以我想知道linux和windows如何独特地处理java线程。有什么区别?谁创建操作系统线程?他们分配了什么内存?
如果将来范围可扩展性和集群化哪个选项更好?
如果将来范围可扩展性和集群化哪个选项更好?
可伸缩性和集群最有可能受到代码的内部设计的阻碍,而不是受到 JVM 或底层操作系统的阻碍。在不深入研究代码的情况下,每条关于此的声明都只是热噪声,而不是深刻的声明。
但是 Java 的好处是:它可以在两个平台上运行而无需更改代码。因此,您可以做的最好的事情是:在同一硬件上对两个操作系统进行基准测试(但不要使用任何类型的虚拟化!)并为您的目的使用最好的一个。
linux和windows如何区别处理java线程。
Java 的美妙之处在于你并不在乎。他们只是工作。但如果你真的很好奇,现代 JVM 将线程处理委托给操作系统。所以它更多的是操作系统问题而不是 Java。
有什么区别?
看上面。Java 在这里没什么可做的。它是关于如何在主机操作系统中实现线程。
谁创建操作系统线程?
JVM 要求操作系统创建它们,并在 JavaThread
对象和本机线程之间提供一个瘦包装器。
他们分配了什么内存?
每个线程都有自己的堆栈(参见-Xss
JVM 选项)。此外,所有线程共享相同的堆空间。