Java 为什么不是';并行编程是否更常用?

Java 为什么不是';并行编程是否更常用?,java,parallel-processing,Java,Parallel Processing,我从1998年开始从事软件开发(Java),并与许多不同的团队合作解决各种不同的问题。在此期间,从未有任何团队使用过并行编程方法。尽管多核处理器已经存在了一段时间,但我发现,在现实世界中,解决问题的并行编程模型仍然在很大程度上被忽视。那么,为什么并行编程没有被更多地使用呢?这似乎是一种使事情更具可伸缩性、效率更高、并且总体上提高程序性能的好方法。真正的并行编程(将问题分解为多个核心)对于长时间运行的算法来说最为有趣。大多数实际应用程序都是更多的事件处理器。这些事件通常会并行运行(假设web服务器

我从1998年开始从事软件开发(Java),并与许多不同的团队合作解决各种不同的问题。在此期间,从未有任何团队使用过并行编程方法。尽管多核处理器已经存在了一段时间,但我发现,在现实世界中,解决问题的并行编程模型仍然在很大程度上被忽视。那么,为什么并行编程没有被更多地使用呢?这似乎是一种使事情更具可伸缩性、效率更高、并且总体上提高程序性能的好方法。

真正的并行编程(将问题分解为多个核心)对于长时间运行的算法来说最为有趣。大多数实际应用程序都是更多的事件处理器。这些事件通常会并行运行(假设web服务器有几个线程来处理请求)。当编程用于解决一个算术问题时,它被更频繁地使用(想想优化、数据分析等)

对于长时间运行的算法来说,真正的并行编程(将一个问题分解到几个核上)是最有趣的。大多数实际应用程序都是更多的事件处理器。这些事件通常会并行运行(假设web服务器有几个线程来处理请求)。当编程用于解决算术问题时,它会被更频繁地使用(想想优化、数据分析等)

因为在Java这样的多线程共享内存环境中正确地进行并行编程非常非常困难。实际上,你肯定会犯一些很难诊断的错误。当然,这是额外的努力


此外,大多数人使用的程序都是工作流系统。这些应用的桌面版本并不是性能关键型的,而webapps/服务器组件通过让每个请求都由自己的线程提供服务来实现并行化也很简单。这样做的好处是,开发人员实际上不必处理并行方面的问题。

因为在Java这样的多线程共享内存环境中正确地进行并行编程非常非常困难。实际上,你肯定会犯一些很难诊断的错误。当然,这是额外的努力


此外,大多数人使用的程序都是工作流系统。这些应用的桌面版本并不是性能关键型的,而webapps/服务器组件通过让每个请求都由自己的线程提供服务来实现并行化也很简单。这样做的好处是,开发人员实际上不必处理并行方面的问题。

因为并行编程并不适用于所有可能的问题,而且编写正确的并发程序很困难。特别是要确保线程正确同步而没有不必要的锁定是不容易的。此外,根据线程调度的时间发生的bug很难重现、发现和修复。如果每100000个事务发生一次并发错误,并且它发生在生产上,而不是在开发系统上(我去过那里…),那么这将是非常糟糕的


阅读这本书,这是关于Java并发编程的最佳书籍。

因为并行编程并不适用于所有可能的问题,而且编写正确的并发程序很难。特别是要确保线程正确同步而没有不必要的锁定是不容易的。此外,根据线程调度的时间发生的bug很难重现、发现和修复。如果每100000个事务发生一次并发错误,并且它发生在生产上,而不是在开发系统上(我去过那里…),那么这将是非常糟糕的

阅读这本书,这是关于Java并发编程的最好的书

在现实世界中,并行编程模型在很大程度上仍然被忽略以解决问题

我认为它被用于解决问题的地方。但是它不是免费的,所以当一个简单的串行(同步)解决方案足够好时,最好不要并行(异步)执行任何操作

在现实世界中,并行编程模型在很大程度上仍然被忽略以解决问题


我认为它被用于解决问题的地方。但它不是免费提供的,所以当一个简单的串行(同步)解决方案足够好时,最好不要并行(异步)执行任何操作。

我认为您的观点是错误的,对于示例,当您有一个服务器端应用程序时,应用程序服务器通过线程处理任何请求(可能从线程池实现)

我想任何需要并行(多线程)模型的地方都必须进行并行编程

以下链接中有有用的信息:


我认为您的观点是错误的,对于示例,当您有一个服务器端应用程序时,应用程序服务器通过一个线程处理任何请求(可能从线程池实现)

我想任何需要并行(多线程)模型的地方都必须进行并行编程

以下链接中有有用的信息:


问错地方了。更为相关。简单的回答,并行编程真的很难。只是好奇:你一直在研究什么样的问题?有趣的是,并行编程在生物物理学中被大量使用,而女性主要适应它所需要的思维方式。问错了地方。更为相关。简单的回答,并行编程真的很难。只是好奇:你一直在研究什么样的问题?有趣的是,并行编程在生物物理学中被大量使用,而女性主要适应于它所需要的思维方式。