java多线程在不同的OS上是不同的吗?

时间:2018-05-06 00:56:27

标签: java multithreading operating-system

我正在使用java制作一个模拟餐馆的多线程程序。我正在使用最新的Eclipse Java Oxygen来完成它。我试图在windows 10和linux mint上运行它,总是使用Eclipse,它在windows上工作得很好,但是当我在linux上尝试SAME项目时就停止了。在Windows和Linux上运行多线程程序有什么区别吗?

由于

2 个答案:

答案 0 :(得分:3)

因为Java是跨浏览器兼容的,所以无论操作系统如何,代码都应该没有区别。这意味着如果您有一个在其中使用多个线程的应用程序,只要您的实际应用程序按您的需要工作,它就可以在任何Os上运行。这种情况的原因是Java将.java中的Java代码转换为.class中的byteCode,这将转换为每个相应OS的汇编代码。可能阻止你的程序的东西是Java过时,或者没有完全安装。如果不是这种情况,那么你可以在Linux Mint中查看RAM可用性和每个程序的任何类型的线程限制。

答案 1 :(得分:3)

Java中的多线程依赖于操作系统来安排本机线程。本机线程调度程序由操作系统本身在内核中实现。它们是具有不同行为的不同代码片段。它们(也可能)在系统级别可调。

是的,存在的差异可能会影响Java应用程序的运行方式,但很难弄清楚它们是什么......更不用说简单地描述它们了。

您看到的问题也可能是由于不同执行平台之间存在一些其他差异:有很多可能性。或者可能是由于您的应用程序与文件系统或网络或外部应用程序进行通信的方式,所有这些都存在差异。

我建议你首先使用可用的调试工具来描述当#34;它停止"时发生的事情。线程死了吗?线程是否被锁定?等等。然后查找特定行为的具体原因。

请注意,有两组"经典错误"那些刚接触Java线程的人:

  1. 对线程如何运行做出无根据的假设;例如线程是公平调度的,或者它们将以直观顺序启动和运行。

  2. 同步不足;例如当两个或多个线程在没有充分同步的情况下访问和/或修改共享变量或数据结构时。 (这可能导致行为无法预测且非常直观。)

  3. 完成所有操作后,可以编写多线程Java程序,以便在许多平台上正常运行。但除非您清楚地描述问题并向我们展示相关代码,否则我们无法帮助您解决具体问题。在这种情况下,MCVE是非常可取的。