有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我是否以错误的方式看待多线程?(爪哇)

在过去的几周里,我一直在研究Java中的并发(多线程)。我发现这很难,而且与我迄今为止在Java语言中(或在一般编程中)遇到的任何事情都有很大不同。我经常不得不反复阅读,直到我开始完全理解一个小概念

这很令人沮丧,我想知道为什么Java编程语言的这一部分给我带来了这么多麻烦

通常,当我查看单线程程序的代码时,我会查看main方法,并开始在我的脑海中一步一步地完成整个执行过程(如调试器)。在整个过程中,我会尽量记住执行过程中每一点的变量及其状态(值)。很多时候,当我这样做的时候,我甚至会在某些时候停下来,思考在不同的场景中程序的执行会如何变化。如果我能像那样从头到尾地完成一个程序,我觉得我已经完全理解了代码和材料

我想,我遇到的问题是,当我尝试将此方法应用于并发应用程序时,有太多的事情同时发生(sleep()、同步方法、获取内部锁、使用wait()保护块等等),并且有太多不确定的事情何时执行,我几乎不可能跟上一切。这正是让我感到沮丧的地方,因为我想有一种“我可以控制正在发生的事情”的感觉,但要同时做到这一点是不可能的

任何帮助都将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    实际上,并发是一个简单的概念——您有几个独立的执行路径,它们可以相互交互。你提到的东西,比如同步、块、等待等等,都是技术细节和工具

    我建议尝试做一些编码:-)想出一个多线程程序的想法并编码。在某个时刻,你需要使用你列出的其中一种工具,它将开始到位。这不是一个你应该只在理论上理解的概念^

  2. # 2 楼答案

    与其说是一门科学,不如说并发编程是一门艺术

    在讨论Java并发性之前,请先看一下概念性的东西。。i、 e.并发中的主要问题是什么?什么是锁?什么是信号灯?什么是障碍?我们为什么要用这些?我们如何将它们用于不同的用途,如变量保护、同步等。?同样也有一些

    然后你可能会在进入特定语言使用之前获得一些非常重要的知识

    对于一个一直遵循顺序编程并首先研究并发性的人来说,一下子理解这些东西肯定会更加困难。但我相信,经过一段时间后,你也可以达到并发编程的顺序编程水平。:)