0%

Multithreading and Concurrency at a glance

如果您看到这篇文章,我想您是对多线程(Multithreading )和并发(Concurrency)是很感兴趣的了。您可能在其他平台上已经初步了解了线程,现在想知道在 Java 平台上如何实现。我也和您一样,在学习 Java 和多线程。

这篇文章,将带您大致的了解多线程和并发。

基础

首先,要了解线程的基本原理,比如什么是进程(process),什么是线程(Threads),它们之间有什么区别。

进程(Process):

  • 程序或应用的实例(当启动 Java 应用的时候创建)
  • 拥有资源(硬件资源,比如内存、处理器)
  • 有至少一个线程(当进程开始时它创建了主线程)

    线程(Thread):

  • 执行您的程序代码的一系列编程指令
  • 利用进程资源

一个线程能够启动新的线程。在上图中,我们的主线程启动了另一个线程,这个线程又启动了另一个,等等(每个线程也可以启动多个)。这样的结果是我们的应用现在同时运行了四个线程,所以它是多线程了。

由于它们都使用属于它们自己单进程的资源,我们想到了并发(concurrency),这些都是并发操作或者并发执行。

在给定的时间(time)x 里的所有线程通过内存相互作用,直到它们不再想操作同样的资源。在图例中,线程3 需要使用和线程1 相同的资源。这种情况也就是我们说道的并发。我们需要整合这些线程的工作以确保它们不会引入错误。我们来解释为何以及什么时候应该构建多线程的环境。

什么是多线程的情况?

能使用整个 CPU

  • 线程通常等待无CPU(non-CPU)的任务,通过网络、存储等设备交互。比如:当我们等待存储读写数据,我们的线程没有占用 CPU,因此它可能是闲置状态。
  • 今天的大多数计算机和移动设备都拥有多个核心,允许程序并行(parallel)地运行,我们可以通过它们运行多线程的应用。

有什么好处吗?

  • 减少 执行时间,如果我们的操作可以并行,执行任务的时间将会节省。
  • 高效的执行时间会使程序更快的响应。

在下一篇文章,我将会通过 Java 实例来展示多线程,当您想构建多线程时就知道该如何做了。

https://www.zoltanraffai.com/blog/multithreading-and-concurrency-at-a-glance/