第一章 多线程入门之概念
第一章 多线程入门之概念
前言
本文主要记录了进程
,线程
,并发
,并行
相关的概念
一、进程
1.1 概述
进程在windows中就是一个.exe
程序,这是我们所熟知的。我们知道程序通过指令
和数据
构成,这些指令和数据存在于磁盘
或网络
中需要加载到内存中。开启进程其实就是加载指令和数据到内存中的过程。比如Jvm就是一个进程,它开启时会将字节码文件加载到内存区域中。
在java中,进程是资源分配的最小单位
1.2 进程通信
- 同一台计算机的不同进程的通信使用IPC协议
- 不同计算机的不同进程的通信使用Http协议或者Rpc协议,,,
二、线程
1.1 概述
一个进程会有很多的线程,线程的作用就是将内存中的指令流
交给CPU
执行,说人话就是线程将内存中的指令集交给CPU一步一步执行,比如Jvm中一个栈结构就代表一个线程,通过方法区中的指令集,数据进行入栈出栈操作实现运算。
在java中,线程是最小的调度单位
1.2 线程通信
一个进程之间的线程可以共享资源
三、并发
3.1概述
并发又称为concurrent
,CPU中有一个任务调度器
,将时间分成时间片,windows一般是15ms,一个时间片对应一个线程。试想一下只有一个CPU怎么能同时执行这么多指令组呢,就好像你不能同时扫地,洗澡,敲代码一样。
四、并行
4.1概述
并发指的是多个CPU同时操作多个线程,对应上面的例子,你可以请阿姨帮你打扫屋子,请别人帮你敲代码,自己只要洗澡就可以了。
五、 异步
5.1概述
在一个main()方法中,先后调用了f1()和f2()两个方法。异步
指的就是只有f1()方法结束了之后才能执行f2()方法;同步
Z指的就是不需要f1()方法结束便可以执行f2()方法。在Java中实现异步就是通过多线程。
总结
本篇文章主要简述了多线程编程涉及到的基本概念
如果有问题请评论中指出,希望大家共同进步
:simle