简而言之,并发是并行运行多个程序或程序的多个部分的能力。 并发使程序可以通过利用底层操作系统和机器硬件的未开发能力来实现高性能和吞吐量。 例如现代计算机在一个 CPU 中具有多个 CPU 或多个内核,程序可以将所有内核用于处理的某些部分; 因此,与顺序处理相比,可以更早地完成任务。
Java 并发的主干是线程。 线程是一个轻量级进程,它具有自己的调用栈,但可以访问同一进程中其他线程的共享数据。 Java 应用程序默认在一个进程中运行。 在 Java 应用程序中,您可以使用许多线程来实现并行处理或并发。
第一个类是java.lang.Thread
类,您需要使一个 Java 类并发。 此类是 Java 中所有并发概念的基础。 然后,您具有java.lang.Runnable
接口,可以从线程类中抽象出线程行为。
您可以在 Java 1.5 中添加的java.util.concurrent
包中找到构建高级应用程序所需的其他类。
阅读更多: Java 并发演化
上面的描述给人的印象是并发确实是一个好概念,并且很容易实现。 好吧,不是。 它需要对基本概念有足够的了解,并且需要对应用程序目标有清晰的了解。
与单线程应用程序相比,并发应用程序通常具有更复杂的设计。 由多个线程访问共享数据执行的代码需要特别注意。 错误线程同步引起的错误很难检测,重现和修复。 它们通常在较高的环境(例如生产环境)中显示,有时在较低的环境中不可能复制错误。
除了复杂的缺陷外,并发还需要更多资源来运行应用程序。 因此,请确保您的小猫咪有足够的资源。
在单个帖子中涵盖整个 Java 并发几乎是不可能的。 因此,我在下面的 Java 并发教程中编写了一篇文章,讨论了一个单独的概念。 浏览这些教程,如果您有任何问题或建议,请告诉我。
使用ThreadPoolExecutor
和Semaphore
限制任务提交率
Java.util.concurrent.locks.Lock
java.util.concurrent.ThreadFactory
学习愉快!