Java并发是一个涵盖Java平台上的多线程、并发和并行性的术语。这包括Java并发工具、问题和解决方案。本Java并发教程涵盖了与Java中的多线程相关的多线程、并发构造、并发问题、成本和收益的核心概念。
如果您喜欢看视频,小编这里到是有全套的Java视频教程,其中涵盖了本教程系列涵盖的一些相同主题。您可以在此处找到视频播放列表:
多线程意味着您在同一个应用程序中有多个执行线程。线程就像执行应用程序的独立CPU。因此,多线程应用程序就像具有多个CPU同时执行代码的不同部分的应用程序。
但是,线程不等于CPU。通常单个CPU将在多个线程之间共享其执行时间,在给定时间内执行每个线程之间切换。也可以让应用程序的线程由不同的CPU执行。
关于为什么要在应用程序中使用多线程有几个原因。多线程的一些最常见原因是:
我将在以下各节中更详细地解释这些原因。
最常见的原因之一是能够更好地利用计算机中的资源。例如,如果一个线程正在等待对通过网络发送的请求的响应,那么另一个线程可以同时使用CPU来做其他事情。此外,如果计算机有多个CPU,或者CPU有多个执行内核,那么多线程还可以帮助您的应用程序利用这些额外的CPU内核。
如果计算机包含多个CPU或CPU包含多个执行核心,那么您需要使用多个线程让您的应用程序能够利用所有CPU或CPU核心。单个线程最多只能使用单个CPU,而且正如我上面提到的,有时甚至不能完全使用单个CPU。
使用多线程的另一个原因是提供更好的用户体验。例如,如果您单击GUI中的按钮并导致通过网络发送请求,那么执行此请求的线程很重要。如果您使用也更新GUI的同一线程,那么当GUI线程等待请求的响应时,用户可能会遇到GUI“挂起”。相反,这样的请求可以由后台线程执行,因此GUI线程在此期间可以自由地响应其他用户请求。
第四个原因是在用户之间更公平地共享计算机资源。例如,假设一台服务器接收来自客户端的请求,并且只有一个线程来执行这些请求。如果一个客户端发送一个需要很长时间来处理的请求,那么所有其他客户端的请求都必须等到一个请求完成。通过让每个客户端的请求由其自己的线程执行,那么没有单个任务可以完全独占CPU。
在过去,计算机只有一个CPU,一次只能执行一个程序。大多数小型计算机的功能并不足以同时执行多个程序,因此没有尝试过。公平地说,与个人计算机相比,许多大型机系统能够一次执行多个程序多年。
后来出现了多任务处理,这意味着计算机可以同时执行多个程序(AKA任务或进程)。不过,这并不是真正的“同时”。单个CPU在程序之间共享。操作系统会在运行的程序之间切换,在切换之前执行它们中的每一个。
随着多任务处理,软件开发人员面临新的挑战。程序不能再假定所有可用的CPU时间、所有内存或任何其他计算机资源都可用。一个“好公民”程序应该释放它不再使用的所有资源,以便其他程序可以使用它们。
后来出现了多线程,这意味着您可以在同一个程序中拥有多个执行线程。执行线程可以被认为是执行程序的CPU。当您有多个线程执行同一个程序时,就像在同一个程序中执行多个CPU一样。
多线程是提高某些类型程序性能的好方法。然而,多线程比多任务更具挑战性。线程在同一个程序中执行,因此同时读取和写入相同的内存。这可能导致在单线程程序中看不到的错误。其中一些错误在单CPU机器上可能看不到,因为两个线程从未真正“同时”执行。但是,现代计算机配备了多核CPU,甚至还配备了多个CPU。这意味着不同的线程可以同时由不同的内核或CPU执行。
如果一个线程读取一个内存位置而另一个线程写入它,那么第一个线程最终会读取什么值?旧值?第二个线程写入的值?还是两者混合的价值?或者,如果两个线程同时写入同一个内存位置,完成后会留下什么值?第一个线程写入的值?第二个线程写入的值?还是两个值的混合写入?
如果没有适当的预防措施,任何这些结果都是可能的。这种行为甚至无法预测。结果可能会不时改变。因此,作为开发人员,了解如何采取正确的预防措施非常重要——这意味着学习控制线程如何访问共享资源,如内存、文件、数据库等。
以上就是动力节点小编介绍的"Java并发的系统学习视频,一天即可掌握",希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为您服务。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习