在Java和其他编程语言中,线程是CPU利用率的基本单位。线程是进程的一部分,查看进程的一种简单方法是考虑正在执行的程序。
然而,这个定义并不是 100% 准确的。 一个程序可能有多个进程。上面提供的定义只是查看流程的一种简单而有用的方法。
如前所述,进程包含线程。一个线程与同一进程的其他线程共享该进程的数据、代码和其他资源。
在Java中,开发人员可以构建多线程应用程序。多线程允许程序的各个部分并发或并行运行,从而显著提高应用程序的性能。
重要的是要区分并发和并行。一个程序可以同时运行,而不是并行运行。
并发指的是同一个程序的多个部分被执行(不是同时)。这些不同的部分通过分时执行。另一方面,并行性是指同一程序的多个部分同时执行。
可以通过以下方式在单核系统上实现并发交叉。然而,并行性只能在多核系统上通过在不同的核上运行多个线程来实现。
线程还可以用来抵消进程创建过程中产生的性能开销。当执行程序必须执行的重复任务时,这一点尤其重要。
证明这一点的一个很好的例子是web服务器。你可以让你的服务器在每次用户发出请求时创建一个新的进程。然而,这将要求在处理下一个用户的请求之前,首先完成一个用户。
如果你使用的是多线程应用程序,那么你的服务器只需要一个新线程来处理新请求。由于线程共享同一个进程的资源,这将节省你的程序分配新资源的需要以及随之而来的开销。
结语
当编写普通的Java应用程序时,你可以让JVM为你处理线程。JVM通常一次运行一个程序线程,这可能不适合需要速度的系统,比如游戏应用程序。因此,作为程序员,你有必要了解如何创建多线程应用程序。