Tag: 多处理

IPC建议大量小数据

我们将实施一个多进程软件,我们正在寻找一个合适的IPC。 事实: 我们将使用Java(如果我们面临时间关键的话,我会使用C) 所有进程都在一台Unix机器上。 这些进程每秒发送大量(约1000个)小(约4k)数据。 你推荐什么IPC技术? Web服务,RMI,TCP套接字,Unix套接字,管道,……?

多个套接字导致ConnectException:连接被拒绝:连接

我在Windows XP上用Eclipse编程java。 我有一个多进程模拟,它使用ProcessBuilder来运行服务器和两个客户端。 服务器启动一个线程来侦听两个不同的套接字 – 每个客户端一个。 我可以为每个客户注释掉代码,让其他工作完全正常。 当我尝试同时运行它们时,一个客户端将始终使用ConnectException错误:连接被拒绝:连接。 它似乎是哪个客户端运行速度较慢,但​​很难说。 我可以在启动服务器之后但在客户端之前暂停,netstatvalidation两个套接字都处于活动状态。 可能是什么导致了这个? 我在下面有一些简化的代码。 更新:根据评论,我编辑了代码以在单个套接字上multithreading服务器,但我仍然遇到同样的问题。 下面的代码反映了这些变化。 看来套接字是由一个客户端打开和关闭,然后另一个客户端有机会打开它。 我可以在每个客户端的末尾抛出暂停语句,允许另一个完成,但这是一个修复,而不是解决方案。 所以现在真正的问题是,在指示它关闭之前,如何保持ServerSocket的监听? 服务器 try{ server = new ServerSocket(sockNum); } catch (IOException e) { System.out.printf(“Could not listen on port %d\n”,sockNum); System.exit(-1); } while(true){ ClientWorker w; try{ Socket connection = server.accept(); w = new ClientWorker(connection); Thread t = new Thread(w); t.start(); } […]

为什么Python在多处理或multithreading应用程序中不比Java好?

由于Python在GIL方面存在一些问题,因此Java更适合开发多处理应用程序。 你能否以自己的方式certificatejava的有效处理的确切推理?

如何在java中进行多处理,以及期望的速度提升?

我是一个使用Java在csv文件上进行数据处理的新手。 为此,我使用Java(线程池)的multithreadingfunction将csv文件批量导入Java,并在每个行上执行一些操作。 在我的四核上,multithreading可以大大加快这个过程。 我很想知道多处理如何/更加加速操作? 如果是这样,是否有可用的教程? (Java Basic Tutorial提到了一个类,但是我不熟悉语法来自己理解这个类: 来自http://download.oracle.com/javase/tutorial/essential/concurrency/procthread.html : Java虚拟机的大多数实现都作为单个进程运行。 Java应用程序可以使用ProcessBuilder对象创建其他进程。 多进程应用程序超出了本课程的范围[他们在哪里解释?] 。

Java 8自动使用多核?

我在一年前做了一些关于java 7多核的测试。首先,我只在主线程中实现了一些计算(CPU使用率表明只有一个核完成了所有工作)然后我用ExecutorService实例实现了Callable。 在运行它时,所有核心都在进行工作。 现在,一年后,我必须实现一个插入大量数据的小程序(使用java 8)。 所有工作都在主线程中实现(没有Callable和ExecutorService),但是当我运行程序时,CPU使用情况显示,所有4个内核都是98%。 那么java 8会自动在所有CPU内核上分配工作吗? 我很困惑… 这里有一些代码…… MapGenerator.java Region[][] regions = new Region[numOfRegions][numOfRegions]; for(int x = 0; x < regions.length; x++){ for(int z = 0; z < regions[x].length; z++){ newLat = SRTMHandler.getNewLatitude(startLat, z * regionSize * 16); newLon = SRTMHandler.getNewLongitude(startLon, x * regionSize * 16, newLat); regions[x][z] = new Region(x, z, regionSize, […]

Java和C#中的volatile语义背后的原因是什么?

C#和Java都定义了这一点 * volatile读取具有获取语义 * volatile写入具有发布语义 我的问题是: 这是定义volatile的唯一正确方法吗? 如果没有,如果语义被颠倒,事情就会大不相同,也就是说 volatile读取具有释放语义 volatile写入具有获取语义

使用ProcessBuilder运行.java文件

我是一个在Windows XP上使用Eclipse工作的新手程序员,我需要运行多个进程(这将是一个多计算机系统的模拟)。 我最初的hackup使用多个线程到多个类,但现在我正在尝试用进程替换线程。 从我的阅读中,我发现ProcessBuilder是最佳选择。 我已经尝试了下面看到的许多版本的输入,但是在我的生活中无法弄清楚如何正确使用它。 我试图运行我以前创建的.java文件作为类(我已经修改)。 我最终只是做了一个虚拟的test.java来确保我的进程正常工作 – 它唯一的function是打印它运行。 我的两个文件的代码如下。 我正确使用ProcessBuilder吗? 这是读取子进程输出的正确方法吗? 任何帮助将非常感激。 大卫 编辑:解决方案是声明ProcessBuilder(“java.exe”,“ – cp”,“bin”,“Broker.test”); 主要过程 package Control; import java.io.*; import java.lang.*; public class runSPARmatch { /** * @param args */ public static void main(String args[]) { try { ProcessBuilder broker = new ProcessBuilder(“javac.exe”,”test.java”,”src\\Broker\\”); Process runBroker = broker.start(); Reader reader = new InputStreamReader(runBroker.getInputStream()); […]

Java pool.map/ Multiprocessing的Java等价物

我想知道是否有人可以指点我在java中使用python的多处理模块。 我有一个简单的并行处理场景(没有2个进程交互):获取数据集并将其拆分为12并将java方法应用于12个数据集,收集结果并将它们连接到具有相同排序的某种列表中。 Java是一种“专业”语言似乎有多个库和方法 – 谁能帮助这个java新手开始? 我想用最少的编码来做到这一点 – 正如我所说,我的要求非常简单。 更新: 如何在java中进行多处理,以及期望的速度增益? 这似乎表明线程是要走的路。 我希望我别无选择,只能涉足一堆锁(意外的双关语)并等待我的船开航。 尽管如此,欢迎简单的例子。

是否可以通过编程方式启用远程jmx监控?

我需要以编程方式启动一个新的java进程并动态设置JMX端口。 所以不要这样做 -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=9995 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 我想做以下几点 System.setProperty(“java.rmi.server.hostname”, “127.0.0.1” ); System.setProperty(“com.sun.management.jmxremote”, “true” ); System.setProperty(“com.sun.management.jmxremote.authenticate”, “false” ); System.setProperty(“com.sun.management.jmxremote.ssl”, “false” ); System.setProperty(“com.sun.management.jmxremote.port”, “9995” ); 但它不起作用。 知道为什么吗?

单例Bean如何为并发请求提供服务?

关于单例bean如何详细地处理并发请求,我有一个问题。 我在StackOverflow上搜索过这个问题。 这是来自stackoverflow的示例链接 ,但我发现只有高级详细信息。 我想要了解单例bean如何服务并发请求以及系统处理器如何看到这些请求的完整细节。 我已经研究过在线系统处理器中的并发请求处理。 他们说处理器本身有一个调度程序,调度程序将决定处理哪个请求。 好的。 如果假设我有多个核心处理器,那么调度程序如何处理并发请求? 任何人都可以向我解释一个单例bean如何在JVM和系统中提供并发请求的分步过程吗? 让我用一个具体的例子来解释。 我有一个类似Sports的课程: class Sports { public void playFootball() { } public void playVolleyBall() { } } 两个请求进来。第一个请求是在创建的Sports类的单例实例上执行playFootball方法。 同时,另一个请求是在类Sports的同一个创建的单例实例上执行playVolleyBall方法。 如何使用单例实例?