Java多线程-线程进程、异步同步、并发并行

本文深入探讨Java中的多线程概念,包括进程与线程的区别,线程调度的抢占式模式,同步与异步的执行机制,以及并发与并行的实现。了解这些基础知识,有助于开发者更好地理解和利用Java进行多线程编程,提升程序效率。
摘要由CSDN通过智能技术生成

《第四章 Java核心类库》

第5节 Java多线程

1. 进程与线程

  • 进程

       是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间进程,是系统进行资源分配和调度的一个独立单位.

  • 线程

      线程是进程的一个实体(执行路径),是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程之间可以自由切换,并发执行。

线程实际上是在进程基础之上的进一步划分, 一个进程最少有一个线程。一个进程启动之后,里面的若干执行路径又可以划分成若干个线程。相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,共享一个堆内存,拥有自己的栈空间和局部变量,拥有独立的执行序列。


2. 线程调度

  • 分时调度

所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。

  • 抢占式调度

优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),
Java使用的为

  • 抢占式调度。

CPU使用抢占式调度模式在多个线程间进行着高速的切换。对于CPU的一个核新而言,某个时刻,只能执行一个线程,而 CPU的在多个线程间切换速度相对我们的感觉要快,看上去就是 在同一时刻运行。 其实,多线程程序并不能提高程序的运行速度,但能够提高程序运行效率,让CPU的 使用率更高。

3. 同步与异步

同步和异步关注的是消息通信机制 (synchronous communication/ asynchronouscommunication)。

  • 同步

排队执行 , 效率低但是安全.。就是调用某个东西时,调用方需要等待这个调用返回结果才能继续往后执行。

  • 异步

同时执行 , 效率高但是数据不安全。和同步相反  调用方不会立即得到结果,而是在调用发出后,调用者可以继续执行后续操作,被调用者通过状态、通知来通知调用者,或者通过回掉函数来处理这个调用。

举例子:

去店里买饭时,我们点好了菜,这时就只能在店里,等待店家炒菜打包好,我们才能离开,这就是同步;而异步就是,我们可以在饿了么上下单,我们可以出去散步、打球,等外卖到了,我们去收货就行了。

4. 并发与并行

  • 并发

指两个或多个事件在同一个时间段内发生。无论上一个开始执行的任务是否完成,当前都可以开始执行。只有一个执行单元。

  • 并行

指两个或多个事件在同一时刻发生(同时发生)。有多个执行单元。

举例子:

 

你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。

并发的关键是你有处理多个任务的能力,不一定要同时。
并行的关键是你有同时处理多个任务的能力。

下一站是Java线程的3种生成方式,有需要的小伙伴可以前往学习哦。附链接:

https://blog.csdn.net/weixin_44394910/article/details/117963731

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值