【青鸟飞扬教育】并发编程关键问题

2025-05-14ASPCMS社区 - fjmyhfvclm

JDK ️天生就是多线程的,多线程大大提速了程序运行的速度,但是凡事有利就有弊,并发编程时经常会涉及到线程之间的通信跟同步问题,一般也说是可见性、原子性、有序性。

线程通信

线程的通信是指线程之间通过什么机制来交换信息,在编程中常用的通信机制有两个,️共享内存️消息传递

共享内存。

在共享内存的并发模型中线程之间共享程序的公共数据状态,线程之前通过读写内存中的公共内存区域来进行信息的传递,典型的共享内存通信方式就是通过️共享对象来进行通信。

消息传递,比如在 Linux 系统中同步机制有管道、信号、消息队列、信号量、套接字这几种方式。

在消息传递的并发模型中,线程之间是没有共享状态的,线程之间必须通过明确的发送消息来显式的进行通信,在 Java 中的典型通信方式就是 wait() 跟 notify()。

在 C/C++ 中可以同时支持共享内存跟消息传递机制,Java 中采用的是共享内存模型。

线程同步

同步是指程序用于控制️不同线程之间操作发生相对顺序的机制。

在共享内存并发模型里,同步是显式进行的。程序员必须 ️显式指定某个方法或某段代码需要在线程之间互斥执行。

在消息传递的并发模型里,由于消息的发送必须在消息的接收之前,因此同步是隐式进行的。

全部评论