springboot2 多线程写入数据_一步一脚印,了解多线程

本文介绍了多线程技术的基础知识,包括进程与线程的区别,线程在并发和并行中的作用,以及线程安全和并发控制的重要性。通过示例解释了数据竞争和竞态条件,并提到了并发控制的手段,如同步、原子操作和不可变数据。适合初学者了解多线程的概念和挑战。
摘要由CSDN通过智能技术生成

(给ImportNew加星标,提高Java技能)

编译:ImportNew/唐尤华

0. 引言

本文是多线程技术入门篇,对进程、线程、纤程、并发、并行、线程安全、竞态条件等概念进行了介绍,讨论了多线程技术的实现原理、使用中可能遇到的问题以及如何正确处理。

伴随着硬件和操作系统的进步,现在的计算机能够同时执行多个操作,程序执行更快响应时间缩短。

在软件开发中使用并发既诱人又困难,需要了解计算机底层工作原理。本文是系列的第一篇,从操作系统中线程的基本概念入手,介绍线程背后的魔法。让我们开始吧。

1. 正确认识进程与线程

现在的主流操作系统都支持同时运行多个程序,比如可以一边在浏览器上看这篇文章一边用播放器听歌。运行中的浏览器和播放器程序都是**进程**,操作系统提供了一套机制利用底层硬件保证多个进程同时运行。无论具体采用的是哪种技术,最终让你感觉这些程序是在同时运行。

在操作系统中同时执行多任务,进程不是唯一选项。每个进程都能在内部并发执行子任务,子任务也被称为线程。你可以把线程看成一个进程切片。进程启动时会启动至少一个线程,称为主线程。接下来,根据程序或开发者的需要可以启动新线程或终止线程。多线程即在一个进程中运行多个线程。

例如,播放器会运行多个线程。一个线程显示界面,通常是主线程,另一个线程播放音乐。

可以把操作系统看成进程的容器,而每个进程又是线程的容器。虽然本文只关注线程,但这个主题非常吸引人,值得在未来深入分析。

c08b7fba14497bd5e7edfa264154bd3f.png

"1. 操作系统这个盒子里装的是进程,进程又包含了一个或多个线程"

1.1 进程与线程的区别

操作系统会为每个进程分配一块独立的内存。默认情况下,一个进程的内存不能与其他进程共享。例如浏览器不能访问播放器的内存,反之亦然。一个进程启动的多个实例也是如此。启动两次浏览器,操作系统会把每个实例看作一个新进程,并为其分配一块独立的内存。因此,多个进程之间默认是无法共享数据的,除非使用进程间通信(IPC)技术。

与进程不同,线程能够共享父进程的内存。例如播放器中,音乐播放线程可以访问界面线程的数据,反之亦然。因此,线程之间沟通起来更容易。此外,线程占用资源更少,创建速度更快,这就是为什么线程也被称为轻量级进程。

如果没有线程,需要将这些任务作为进程运行并通过操作系统同步。使用 IPC 通信相对困难,而且由于进程比线程更“重”,执行速度也更慢。

1.2 Green Thread 纤程

到目前为止,线程都由操作系统管理,即必须经由操作系统才能启动一个新线程,不过并非所有平台都支持线程。Green Thread 也称为纤程,它模拟线程的工作,可以在不支持本地线程的平台上开发多线程应用。例如,如果操作系统不支持本地线程,虚拟机会实现纤程。

纤程的优点是创建速度快、管理效率高,因为完全绕过了操作系统。但纤程也有缺点,会在下一篇中讨论。

“Green Thread”代指 Sun 公司的 Green Team,他们在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值