多线程总结

本文介绍了进程和线程的概念,JVM启动时的线程模型,以及进程和线程之间的关系。通过阿里巴巴和京东的比喻,阐述了进程可视为公司,线程为公司员工。Java程序中,主线程和垃圾回收线程并发执行,提高了程序效率。对于单核CPU,虽然无法真正并发,但快速切换使得用户感觉多线程并发。线程有新建、就绪、运行、阻塞和死亡五种状态。理解这些概念有助于掌握多线程编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、多线程

1、什么是进程?什么是线程?

进程是一个应用程序(1个进程是一个软件)。

线程是一个进程中的执行场景/执行单元

一个进程可以启动多个线程。

对于java程序来说,当在DOS命令窗口中输入:
java HelloWorld 回车之后。会先启动JVM,而JVM就是一个进程。
JVM再启动一个主线程调用main方法.同时再启动一个垃圾回收线程负责看护,回收垃圾。
最起码,现在的java程序中至少有两个线程并发,
一个是垃圾回收线程,一个是执行main方法的主线程.

 2、进程和线程是什么关系?举例

阿里巴巴:进程
马云:阿里巴巴的一个线程
童文红:阿里巴巴的一个线程

京东:进程
强东:京东的一个线程
妹妹:京东的一个线程

 

进程可以看做是现实生活中的公司。

线程可以看做是公司当中的某个员工。

注意:进程A和进程B的内存独立不共享。(阿里和京东的资源不会共享)
魔兽游戏是一个进程
酷狗音乐是一个进程
这两个进程是独立的,不共享资源。

线程A和线程B呢?

在java语言中:
线程A和线程B,堆内存和方法区内存共享。
但是栈内存独立,一个线程一个栈。
假设启动10个线程,会有10个栈空间,每个栈和每个栈之间,互不干扰,各自执行各自的,这就是多线程并发。
 


火车站,可以看做是一个进程。
火车站中的每一个售票窗口可以看做是一个线程。
我在窗口1购票,你可以在窗口2购票,你不需要等我,我也不需要等你,所以多线程并发可以提高效率。 

 

java中之所以有多线程机制,目的就是为了提高程序的处理效率

3、使用了多线程机制之后,main方法结束,有可能程序也不会结束。

因为main方法结束只是主线程结束了,主栈空了,其它的栈(线程)可能还在压栈弹栈。

 在这里插入图片描述

 

二、多线程并发的理解
分析一个问题:对于单核的CPU来说,真的可以做到真正的多线程并发吗?

对于多核的CPU电脑来说,真正的多线程并发是没问题的。
4核CPU表示同一一个时间点上,可以真正的有4个进程并发执行。

什么是真正的多线程并发?
t1线程执行t1的。
t2线程执行t2的。
t1不会影响t2,t2也不会影响t1.这叫做真正的多线程并发。

单核的CPU表示只有一个大脑:
不能够做到真正的多线程并发,但是可以做到给人一种**"多线程并发"的感觉**。对于单核的CPU来说,在某一个时间点上实际上只能处理一件事情,但是由于CPU的处理速度极快,多个线程之间频繁切换执行,跟人来的感觉是:多个事情同时在做!!!
线程A:播放音乐
线程B:运行魔兽游戏
线程A和线程B频繁切换执行,人类会感觉音乐一直在播放,游戏一直在运行,
给我们的感觉是同时并发的。

电影院采用胶卷播放电影,一个胶卷一个胶卷播放速度达到一定程度之后,人类的眼睛产生了错觉,感觉是动画的。这说明人类的反应速度很慢,就像一根钢针扎到手上,到最终感觉到疼,这个过程是需要"很长的"时间的,在这个期间计算机可以进行亿万次的循环。所以计算机的执行速度很快。

 

三、线程的生命周期

  • 1.新建状态
  • 2.就绪状态
  • 3.运行状态
  • 4.阻塞状态
  • 5.死亡状态

 在这里插入图片描述

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让火车在天上飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值