Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对并发体系结构概念的混淆_Java_Multithreading_Concurrency - Fatal编程技术网

Java 对并发体系结构概念的混淆

Java 对并发体系结构概念的混淆,java,multithreading,concurrency,Java,Multithreading,Concurrency,我对并发有一些基本的想法,但对下面的体系结构感到困惑。我认为这是同时发生的,但我的同事认为不是。架构如下所示: 我有多个机器人将数据发布到各自的网关上,还有另一个java服务在网关上侦听。该服务创建一个新线程来侦听每个网关 我的理解是服务正在执行并发执行,但我的同事说这不是并发的,因为并发涉及硬件共享 如果有人能澄清或详细说明此主题,我将不胜感激。即使根据同事的定义,这也是一个并发系统,因为服务所在的硬件上有多个线程执行。即使根据同事的定义,这是一个并发系统,因为有多个线程在服务所在的硬件上执行

我对并发有一些基本的想法,但对下面的体系结构感到困惑。我认为这是同时发生的,但我的同事认为不是。架构如下所示:

我有多个机器人将数据发布到各自的网关上,还有另一个java服务在网关上侦听。该服务创建一个新线程来侦听每个网关

我的理解是服务正在执行并发执行,但我的同事说这不是并发的,因为并发涉及硬件共享


如果有人能澄清或详细说明此主题,我将不胜感激。

即使根据同事的定义,这也是一个并发系统,因为服务所在的硬件上有多个线程执行。

即使根据同事的定义,这是一个并发系统,因为有多个线程在服务所在的硬件上执行

我的理解是服务正在执行并发执行,但我的同事说这不是并发的,因为并发涉及硬件共享

TL/DR:单词是粘糊糊的。这就是为什么我们有代码

“并发”只是指同时发生两件或多件事情。当它应用于计算时,真正的并发意味着两个或多个执行线程同时运行,这需要单独的硬件。这当然可以是同一CPU的独立内核,也可以是同一机箱中的独立CPU,因此存在一定程度的共享硬件。不过,它也可以是不同机箱中的独立内核,例如在计算集群中,尽管这可能是您的同事的底线所在。不过,这样一条线是相当武断的

相比之下,早在服务器配备多个CPU(核心)之前,许多计算机系统就实现了一种或另一种多任务处理方式,通过操作系统为每个服务器分配CPU时间片并将其切换到和切换出去,多个任务可以同时进行。所有现代通用操作系统都仍然这样做。然而,在单个内核上,这只提供模拟的并发性,因为在任何给定的时刻,实际上只有一个计算在进行

然而,你的同事确实有一个观点,即多个空间分布的机器人在没有协调的情况下同时运行,这有点超出了人们在谈论并发计算时通常的意思。当然,这类机器人在“同时”的一般使用意义上是并发操作的,但将它们描述为参与并发计算有点牵强

分配单独线程以处理与每个机器人的通信的服务器可能因此正在执行并发计算。但是,只要我们正在分心,就要认识到通过单个网络接口的通信是序列化的,因此,除非您的服务器有多个网络接口,否则实际的通信不能真正并发。如果服务器主要只是在数据到达时记录数据,而不是将其合并到正在进行的并发计算中,那么将其描述为执行并发操作可能会产生误导

我的理解是服务正在执行并发执行,但我的同事说这不是并发的,因为并发涉及硬件共享

TL/DR:单词是粘糊糊的。这就是为什么我们有代码

“并发”只是指同时发生两件或多件事情。当它应用于计算时,真正的并发意味着两个或多个执行线程同时运行,这需要单独的硬件。这当然可以是同一CPU的独立内核,也可以是同一机箱中的独立CPU,因此存在一定程度的共享硬件。不过,它也可以是不同机箱中的独立内核,例如在计算集群中,尽管这可能是您的同事的底线所在。不过,这样一条线是相当武断的

相比之下,早在服务器配备多个CPU(核心)之前,许多计算机系统就实现了一种或另一种多任务处理方式,通过操作系统为每个服务器分配CPU时间片并将其切换到和切换出去,多个任务可以同时进行。所有现代通用操作系统都仍然这样做。然而,在单个内核上,这只提供模拟的并发性,因为在任何给定的时刻,实际上只有一个计算在进行

然而,你的同事确实有一个观点,即多个空间分布的机器人在没有协调的情况下同时运行,这有点超出了人们在谈论并发计算时通常的意思。当然,这类机器人在“同时”的一般使用意义上是并发操作的,但将它们描述为参与并发计算有点牵强


分配单独线程以处理与每个机器人的通信的服务器可能因此正在执行并发计算。但是,只要我们正在分心,就要认识到通过单个网络接口的通信是序列化的,因此,除非您的服务器有多个网络接口,否则实际的通信不能真正并发。如果服务器主要是在数据到达时记录数据,而不是将其合并到正在进行的并发计算中,那么将其描述为执行并发操作可能会产生误导。

您的问题过于笼统,几乎偏离主题(请参阅)在StackOverflow上可以问什么或不可以问什么。您的问题太笼统,几乎脱离主题(请参阅),无法回答可以问什么或不可以问什么