Java并发编程:原理、状态与执行框架
1. 并发编程概述
在复杂的现实世界中,同时处理多个任务是常见需求。并发意味着两个或多个任务同时取得进展。在2000年代初之前,大多数计算机只有单个处理器,操作系统通过快速切换任务来实现并发,每个任务执行一小部分后再切换到下一个,确保所有任务持续推进。例如,个人计算机可以同时编译程序、发送文件到打印机、接收电子邮件等。
并行是并发的子集,指两个或多个任务同时执行。人体就是一个并行操作的例子,呼吸、血液循环、消化、思考和行走等可以同时进行。如今的多核计算机具备多个处理器,能够并行执行任务。
Java通过语言和API支持并发编程。Java程序可以有多个执行线程,每个线程有自己的方法调用栈和程序计数器,能与其他线程并发执行,同时共享应用程序级资源,如内存和文件句柄,这种能力称为多线程。
并发编程有许多应用场景。例如,在互联网上流式传输音频或视频时,用户通常不想等到整个文件下载完成才开始播放。可以使用多个线程,一个线程负责下载(生产者),另一个线程负责播放(消费者),这两个活动并发进行。为避免播放卡顿,线程需要同步,即协调它们的动作,确保播放器线程在内存中有足够的音频或视频数据时才开始工作。
然而,编写多线程程序并不容易。虽然人类大脑可以同时执行多个功能,但人们很难在并行的思维流之间切换。可以通过一个实验来体会:打开三本书到第1页,尝试同时阅读这三本书,轮流从每本书中读几个单词,会发现切换书籍、记住阅读位置、理解内容等都很有挑战,这就像多线程编程中的困难。
为了降低并发编程的难度和出错概率,建议遵循以下准则:
1. 大多数程序员应使用并发API中现有的集合类和接口,它们会自动管理
Java并发编程:原理、状态与执行框架
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



