并发编程(一)cpu,进程,线程,并发

本文介绍了程序、进程和线程的关系,CPU如何执行指令,以及线程的使用和生命周期。探讨了并发和并行的概念,高并发的定义及实现条件,并指出多线程可能带来的问题,包括原子性、可见性和有序性。

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

一、程序和进程

1.程序的进化论

在这里插入图片描述.java文件经过编译生成.class文件被加载到JVM,打包成jar包,再转换成windows可以执行的.exe文件。

exe:windows操作系统的可执行文件
jar:java开发,需要通过java虚拟机来运行

2.程序和进程的关系

在这里插入图片描述
程序:静态的指令和数据集合
进程:运行状态的程序,数据和指令会加载到内存中

程序启动后指令和数据被加载到内存中。

3.进程和线程的关系

在这里插入图片描述

线程:程序执行的最小单元(目前是,也许会出现比线程更小的执行单元)
进程:线程的集合

4.CPU和RAM的关联

在这里插入图片描述
cpu和内存之间是通过北桥芯片连接,进行数据交互

5.CPU、进程、线程之间的关系

在这里插入图片描述

一个cpu在同一时刻只能执行一个线程

cpu切换不同的线程执行的耗时叫做时间片

6.CPU如何执行

在这里插入图片描述
PC 程序计数器:存储了下一条指令的地址
ALU 逻辑运算单元
寄存器:从内存读取的指令和数据都存在这里

二、线程

1.线程的使用

①实现Runnable接口,重写run()方法

public class ThreadDemo implements Runnable {
    @Override
    public void run() {
        //用户自定义
        int i = 0;
        i = i+1;
        System.out.println("i="+i);
    }

    public static void main(String[] args) {
        
        //start()方法会创建一个新的线程去调用run()方法,而threadDemo.run()由主线程来执行
        ThreadDemo threadDemo = new ThreadDemo();
        Thread thread = new Thread(threadDemo);
        thread.start();   
    }
}

②继承Thread类

public class ThreadDemo extends Thread  {

    public static void main(String[] args) {
        Thread thread = new ThreadDemo();
        thread.start();
    }
2.线程的生命周期

在这里插入图片描述①NEW 初始状态:实例化一个线程时,就是该线程的生命起点 ;

②RUNNABLE 运行时:就绪态和运行中统称为运行时状态;

③WAITING 等待状态:调用方法,释放时间片和锁,需要人工唤醒;

④TIME_WAITING 等待状态:相当于指定了等待的时长,不会释放锁,到点儿自动唤醒,从上一次执行的地方继续执行。

⑤BLOCKED 阻塞状态:A线程要执行Sychronized包裹的代码,但是当前已有线程占用,所以等当前线程执行完毕释放锁,A就会被唤醒去竞争锁来获得Sychronized包裹的代码的执行权。
举个例子:你要去上厕所,但是厕所已经有人在用了。你只有等这个人出来,才能使用厕所

⑥TERMINATED 终止状态:run()方法执行完毕,线程生命结束,被GC回收。

三、并发和并行

1.并发和并行

在这里插入图片描述

并行:同时进行,如CPU1和CPU2属于并行状态,能同时并行2个任务
并发:同一时刻内,能处理的任务数。如上图,t1时间内,能处理的最大任务数是6(thread1-thread6)

多线程:为了提升性能和资源利用率

举例:运动会接力棒比赛,4个队伍参加,比赛时长30分钟。
4个队伍同时进行,就是并行。
30分钟内传递的了多少人,这个就是并发量。

2.高并发的定义以及实现条件

高并发::当前系统能够同时承载的并发数
参考
高并发的条件:

①.硬件资源:

  • cpu,核心数,并行任务数量
  • 内存
  • 磁盘
  • 网卡

②软件

  • 线程:同时运行的线程数量
  • IO:数据库交互
  • 分布式,解决单节点瓶颈
3.多线程带来的问题

三大特性:原子性、可见性、有序性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值