Java多线程(一)、理解进程与多线程的概念及关系

Wesley13
• 阅读 624

一、什么是进程?

简单理解,在多任务系统中,每个独立运行的程序就是一个进程,也可以理解为当前正在运行的每个程序都是一个进程。我们现在使用的操作系统大都是多任务系统的,如:Windows、Linux、Mac OS X、Unix等。因为单个CPU在同一时刻只能执行一个程序,这是铁律。但在系统中单个CPU又怎么能同时执行多个程序呢?实际情况这是由操作系统负责对CPU资源进行调度和分配管理的,虽然单个CPU在某一时刻只能做一件事,但是它以非常小的时间间隔切换来执行多个程序,人用弱眼根本无法察觉CPU在来回交替执行多个程序,所以给人以在同一时刻同时执行多个程序的感觉。如果我们同时打开两个记事本程序A和B,这就是两个不同的进程,A编辑的文稿不会影响到B。因为每个进程都有独立的代码和数据存储空间,操作的都是自己空间的数据,所以互不影响。

二、什么是线程?

一个进程中可以包含一个或多个线程,一个线程就是程序内部的一条执行线索。在单线程中,当程序启动时,就自动产生了一个线程,这个线程称为主线程。主函数main就是在这个线程上运行的,然后主函数按照程序代码的调用顺序依次往下执行。在这种情况下,当主函数调用了子函数,主函数必须等待子函数返回以后才能继续往下执行,不能实现两段代码交替执行的效果。如果要在一个程序中交替执行多段代码,就需要产生多个线程,并指定每个线程上所要运行的程序代码,这就是多线程。在Java中创建多线程有两种方法:继承java.lang.Thread类和实现Runnable接口,并调用Thread类的start方法来启动线程。

Java多线程(一)、理解进程与多线程的概念及关系

三、进程与线程场景分析与理解

1>  计算机的核心是CPU,承担了所有的计算任务。它就好比一座工厂,时刻都在运行。为工厂中的每个部件提供疏通与处理的服务。

Java多线程(一)、理解进程与多线程的概念及关系

2>  假设这座工厂的电力有限,一次只能供给一个车间使用,也就是说一个车间开工的时候,其它车间都必须停工。背后的意思就是说一个CPU同一时间只能执行一个任务(进程)。

Java多线程(一)、理解进程与多线程的概念及关系

3>  进程就好比工厂的车间,任一时刻都只有一个车间在开工生产,其它车间都处于停工状态。背后的意思就是说,CPU在任一时刻总是只能运行单个进程,其它进程都处于非活动状态。

Java多线程(一)、理解进程与多线程的概念及关系

4>  一个车间里可以有很多个工人,它们协同完成一个任务。比如一个手机生产车间,张三负责主板的安装与调试,李四负责显示屏的测试与加工,王五负责手机零件的组装等。线程就好比这车间里的工人,一个进程包含了多个线程,它们各自负责完成自己的任务。

Java多线程(一)、理解进程与多线程的概念及关系

5>  车间里的空间是工人们共享的,比如车间里的许多房间(如:加工房、生产房、组装房等),这些车间里的每个房间,工人们都是可以随意走动、进出的。这就象征者一个进程的内存空间是共享的,该进程中的所有线程都可以使用这片内存空间。

Java多线程(一)、理解进程与多线程的概念及关系

6>  可是车间里每间房间的大小是不同的。有些房间最多只能容纳1个人,比如厕所,里面有人的时候,你就不能再进去了,需要等里面的人出来了你才能进去。也就是说当一个线程在使用某块共享内存的时候,其它线程必须等待它使用结束之后,其它线程才能使用这块内存。

Java多线程(一)、理解进程与多线程的概念及关系

7>  一个访止他人进入的简单办法,就是进入厕所之后,在外面挂一把锁。先到的人进入厕所后锁上门,后到的人看到厕所上锁了,就在门口排队,等锁打开了再进去。这就是"互斥锁"(mutex),防止多个线程同时读写某一块内存区域中的数据。在Java中使用synchronized关键字实现多个线程之间的互斥。

Java多线程(一)、理解进程与多线程的概念及关系

8>  还有些房间,可以同时容纳N个人,比如说厨房。如果人数大于N,多出来的人数只能在外面等着,等待其它人出来之后才能进去。这就好比某些共享内存区域,只供固定数目的线程访问。

Java多线程(一)、理解进程与多线程的概念及关系

这时的解决方式就是在门外挂N把锁,进去的人就取一把锁,出来时把锁挂回原处。后到的人发现钥匙架空了,就知道在门外排队等着了。这种做法叫做**“信号量(Semaphore)**,用来保证多个线程不会互相冲突。

Java多线程(一)、理解进程与多线程的概念及关系

点赞
收藏
评论区
推荐文章
BichonCode BichonCode
3年前
操作系统
一、进程的相关概念1.1定义进程用来描述一个程序及其执行过程中的信息,即描述一个执行中的程序,所以才将其命名为进程,即进行中的程序,也可以说进程是程序的一次执行。1.2进程的状态操作系统中的进程状态主要包括∶运行态——当前占有CPU、正在执行的进程状态;就绪态——一个进程具备了所有可以执行的条件,只要获得CPU就能开始执
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java多线程总结
线程或者说多线程,是我们处理多任务的强大工具。线程和进程是不同的,每个进程都是一个独立运行的程序,拥有自己的变量,且不同进程间的变量不能共享;而线程是运行在进程内部的,每个正在运行的进程至少有一个线程,而且不同的线程之间可以在进程范围内共享数据。也就是说进程有自己独立的存储空间,而线程是和它所属的进程内的其他线程共享一个存储空间。线程的使用可以使我们能够并行
Wesley13 Wesley13
3年前
Java并发基础
一、多线程基础知识1.进程和线程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。线程:进程内部的一个独立执行单元;一个进程可以同时并发的运行多个线程,
Wesley13 Wesley13
3年前
Java高级教程02
\TOC\1.Java线程1.1.多线程和多进程多进程:操作系统能够同时进行多个任务:每个app(word,播放器,浏览器)可以同时运行多线程:同一应用程序中哟多个顺序流同时执行线程是进程中的一部分1.2.线程的执行过程:!(
Wesley13 Wesley13
3年前
Java面试官都爱问的多线程和并发面试题汇总,多刷一题,多份安心!
Java多线程面试问题1、进程和线程之间有什么不同?一个进程是一个独立(selfcontained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进
Wesley13 Wesley13
3年前
Java 并发编程:进程、线程、并行与并发
一谈到Java并发编程,我们一般就会联想起进程、线程、并行、并发等等概念。那么这些概念都代表什么呢?进程与线程有什么关系?并发与并行又是什么关系呢?进程与线程进程是指程序的一次动态执行过程,通常我们说计算机中正在执行的程序就是进程,每个程序都会对应着一个进程。一个进程包含了从代码加载到执行完成的一个完整过程,它是操作系统资源分配最小单
Wesley13 Wesley13
3年前
Java并发编程:进程、线程、并行与并发
一谈到Java并发编程,我们一般就会联想起进程、线程、并行、并发等等概念。那么这些概念都代表什么呢?进程与线程有什么关系?并发与并行又是什么关系呢?01 进程与线程进程是指程序的一次动态执行过程,通常我们说计算机中正在执行的程序就是进程,每个程序都会对应着一个进程。一个进程包含了从代码加载到执行完成的一个完整过程,它是操作系
Wesley13 Wesley13
3年前
Java中多线程并发体系知识点汇总
一、多线程1、操作系统有两个容易混淆的概念,进程和线程。进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一进
胖大海 胖大海
2年前
linux 进程管理
1\.为什么要引入进程主要是为了提高CPU利用率,人们设计了在一台计算机实现能将多个程序同时加载、并发执行,从而引入进程的概念。每个加载到内存中的程序都称为进程,操作系统管理者多个进程并发执行。进程会认为自己独立占用CPU资源2\.进程的概念2.1进程的定义进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程进程包含了正