我正在用java做一个模拟餐馆的多线程程序。我使用的是最新的Eclipse Java Oxygen。我尝试过在windows10和linux mint上运行它,总是使用Eclipse,它在windows上运行得很好,但是当我在linux上尝试同样的项目时,它就停止了。在windows和linux上运行多线程程序有什么区别吗?
谢谢
发布于 2018-05-06 09:02:36
因为Java是为跨操作系统兼容而构建的,所以无论操作系统是什么,代码都应该没有区别。这意味着,如果您的应用程序在其中使用了多个线程,那么只要您的实际应用程序按照您希望的那样工作,它就可以在任何O上工作。出现这种情况的原因是,Java将.java中的Java代码转换为.class中的byteCode,.class将被转换为每个操作系统的汇编代码。可能导致您的程序停止运行的原因是Java已过时,或者根本没有安装。如果两者都不是这样,那么您可以查看诸如RAM可用性和Linux Mint中每个程序的任何类型的线程限制之类的内容。
发布于 2018-05-06 09:02:53
Java中的多线程依赖于操作系统来调度本机线程。本机线程调度器由操作系统本身在内核中实现。它们是具有不同行为的不同代码片段。而且它们(可能)在系统级也是可调的。
是的,有一些差异可能会影响Java应用程序的运行方式,但很难弄清楚它们是什么……更不用说简单地描述它们了。
您看到的问题也可能是由于不同执行平台之间的一些其他差异造成的:有很多可能性。或者,这可能是由于您的应用程序与文件系统、网络或外部应用程序进行通信的方式,所有这些都有差异。
我建议你首先使用可用的调试工具来描述当“它停止”时发生的事情。线程已经死了吗?线程在锁上被阻塞了吗?等等。然后寻找导致特定行为的特定原因。
请注意,Java线程新手会犯两组“经典错误”:
对线程如何运行做出不合理的假设;例如,线程被公平调度,或者它们将在直观的order.
的行为
总之,您可以编写一个多线程Java程序,以便在许多平台上正常工作。但我们无法帮助您解决具体的问题,除非您清楚地描述问题,并向我们展示相关代码。在这样的情况下,MCVE是非常可取的。
https://stackoverflow.com/questions/50195344
复制相似问题