厕所和多线程有什么关系?读不懂就去上厕所吧。最简单的多线程理解,小白都可以看

2023-11-29 04:30

本文主要是介绍厕所和多线程有什么关系?读不懂就去上厕所吧。最简单的多线程理解,小白都可以看,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小伙伴们大家好啊,这里是布丁萨玛,JAVA多线程也是面试的常客,所以为了之后的面试,也为了使自己能够更好的(zhuang)步(bi)。所以我们一期来看一下什么是多线程。

因为自己也是初学者,并且没有什么项目实习的经验,所以写出来的东西都是自己理解到的东西,但是我们尽量已轻松的方式给小伙伴们讲出来,如果有什么不对的地方,欢迎大家在评论区指(si)出(bi),谢谢。

ok,我们开始吧。

在这里插入图片描述

在学习之前,我们首先要搞清楚两个问题。

  • 什么是多线程?
  • 我们为什么要学习多线程?

只有搞清楚这两个问题之后我们才能够有目的的去学习。

什么是线程?

什么是线程?
在这里插入图片描述

按照官方的定义:

  • 是一个程序就是一个进程,而一个程序中的多个任务则被称为线程

  • 进程是表示资源分配的基本单位,线程是进程中执行运算的最小单位,亦是调度运行的基本单位。

在这里插入图片描述

前方持续高能!!!!

SO?WHAT?

这是啥?
在这里插入图片描述

啥玩意?

看不懂啊?
在这里插入图片描述

咋能啊?
在这里插入图片描述

相信有的小伙伴会和笔者一样刚看到的时候是懵逼的。

没错,说的就是你
在这里插入图片描述

OK,没关系。

在这里插入图片描述

今天呢,在我们现场,我们请到了世界著名嘉宾,人类最应该感谢得人,被笔者评为世界十大最受委屈的人。

在这里插入图片描述

那就是 当

厕所先生

在这里插入图片描述
鼓掌 👏👏👏👏👏

厕所先生:大家好,我是厕所先生,今天很高兴,能来到布丁的节目。我要感谢我的母亲

布丁:好了好了,厕所先生不要说了,说正经的。
在这里插入图片描述

厕所先生:

  • 这里呢我们就可以把一个厕所当做一个进程,然后呢。里面有好多坑,我们就可以把里面的一个一个坑当做一个线程。而线程就是厕所里面最小的单位。

所以大家只需要记住
在这里插入图片描述

厕所=进程

坑=线程

布丁:正如厕所先生所说,线程就是一个坑。但是呢没有这个坑又不行。没有坑那就不是厕所了。

所以程序=屎。所以大家辞职吧。不要写程序了。
在这里插入图片描述
布丁:好了我们说正经的。
在这里插入图片描述

假如进程是一间宿舍那么线程是什么?

是床

假如进程是一间餐厅那么线程又是什么?

是桌子

假如进程是一个厨房那么线程是什么?

是炉灶

Ok,相信经过上面的这些东西的洗礼,我们就可以大致知道线程进程都有一些什么特点了。
在这里插入图片描述

这里我总结了4点。

  • 1、进程只能有一个,线程可以有n个
  • 2、进程包含线程
  • 3、多个线程可以同时执行
  • 4、多个线程之间不会互相影响
  • 5、进程结束,线程必定结束

关于上面几点,我们就用我们就请出我们最尊贵的厕所来解释一下。

鼓掌 👏👏👏👏👏👏
在这里插入图片描述

布丁:那么请问厕所先生,您对于上面几点有什么想说的呢?

厕所:干于以上给点,鹅觉得所的灰常得。
在这里插入图片描述

布丁:咳咳,厕所先生,麻烦您先冲下厕所再说话。
在这里插入图片描述

厕所先生:哗啦啦~~,咳咳,关于以上几点啊,我觉得说的非常对。

  • 一个厕所最少要有一个坑,否则就不是厕所。

  • 同时我的每个坑都可以同时使用。如果一个坑炸了,别的坑也可以使用。

  • 但是如果厕所炸了那么坑也就不能用了。
    在这里插入图片描述

布丁:好的,厕所先生说的非常好。如果还有小伙伴不懂得话,麻烦出门左转去厕所体验一下。

在这里插入图片描述

OK,我们第一个问题说完了,那么我们来讲第二个问题吧。
在这里插入图片描述

我们为什么要学习线程?

在这里插入图片描述
厕所先生:要说多线程是干什么用的,又为什么需要多线程呢?那么就要从拉屎开始说起了。
在这里插入图片描述
厕所先生:就比如说我里面只有一个坑。但是呢,恰逢当前学校做的饭有点问题。一个班的同学都拉肚子了。
在这里插入图片描述

  • 如果是单线程的情况那么一个同学去拉屎了,然后其他同学就只能等着,如果这个同学拉的快还好说,如果不快,那不就尴尬了。是吧。

在这里插入图片描述

  • 这里呢如果我们有了多线程的话,那就会多好多的坑,
    在这里插入图片描述
  • 那么同学们就可以愉快的一起上厕所了,你不影响我,我不影响你。

这就是多线程的好处。我们使用多线程就可以使我们程序效率更高。
在这里插入图片描述

布丁:那为什么不建个几百个坑啊,那岂不更快?
在这里插入图片描述

厕所先生:我没意见啊。那到时候整个学校怕不如直接改名叫厕所得了。

在这里插入图片描述布丁:我明白了,线程多是会占用我们的资源的。所以我们要在性能和资源之间找到一个平衡点

厕所先生:没错,就是这样。
在这里插入图片描述
布丁:OK,感谢这一期厕所先生的做客,以他自身的经历给我们讲了

  • 什么是多线程?厕所=线程 坑=进程
  • 我们为什么要使用多线程?为了防止拉屎等很久

那么本期就到此结束了,我们下一期就来讲下如何实现多线程,到时候可能还需要厕所先生来做客。小伙伴们有什么想说的。可以在评论区告诉我们。谢谢。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这篇关于厕所和多线程有什么关系?读不懂就去上厕所吧。最简单的多线程理解,小白都可以看的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/431438

相关文章

墨刀原型工具-小白入门篇

墨刀原型工具-小白入门篇 简介 随着互联网的发展和用户体验的重要性越来越受到重视,原型设计逐渐成为了产品设计中的重要环节。墨刀作为一款原型设计工具,以其简洁、易用的特点,受到了很多设计师的喜爱。本文将介绍墨刀原型工具的基本使用方法,以帮助小白快速上手。 第一章:认识墨刀原型工具 1.1 什么是墨刀原型工具 墨刀是一款基于Web的原型设计工具,可以帮助设计师快速创建交互原型,并且可以与团队

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

回调的简单理解

之前一直不太明白回调的用法,现在简单的理解下 就按这张slidingmenu来说,主界面为Activity界面,而旁边的菜单为fragment界面。1.现在通过主界面的slidingmenu按钮来点开旁边的菜单功能并且选中”区县“选项(到这里就可以理解为A类调用B类里面的c方法)。2.通过触发“区县”的选项使得主界面跳转到“区县”相关的新闻列表界面中(到这里就可以理解为B类调用A类中的d方法

Android多线程下载见解

通过for循环开启N个线程,这是多线程,但每次循环都new一个线程肯定很耗内存的。那可以改用线程池来。 就以我个人对多线程下载的理解是开启一个线程后: 1.通过HttpUrlConnection对象获取要下载文件的总长度 2.通过RandomAccessFile流对象在本地创建一个跟远程文件长度一样大小的空文件。 3.通过文件总长度/线程个数=得到每个线程大概要下载的量(线程块大小)。

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用。如果你看不懂,请留言。 完整代码: <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><ti

python实现最简单循环神经网络(RNNs)

Recurrent Neural Networks(RNNs) 的模型: 上图中红色部分是输入向量。文本、单词、数据都是输入,在网络里都以向量的形式进行表示。 绿色部分是隐藏向量。是加工处理过程。 蓝色部分是输出向量。 python代码表示如下: rnn = RNN()y = rnn.step(x) # x为输入向量,y为输出向量 RNNs神经网络由神经元组成, python

如何理解redis是单线程的

写在文章开头 在面试时我们经常会问到这样一道题 你刚刚说redis是单线程的,那你能不能告诉我它是如何基于单个线程完成指令接收与连接接入的? 这时候我们经常会得到沉默,所以对于这道题,笔者会直接通过3.0.0源码分析的角度来剖析一下redis单线程的设计与实现。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CSDN的博客专家 ,也是开源

MySQL理解-下载-安装

MySQL理解: mysql:是一种关系型数据库管理系统。 下载: 进入官网MySQLhttps://www.mysql.com/  找到download 滑动到最下方:有一个开源社区版的链接地址: 然后就下载完成了 安装: 双击: 一直next 一直next这一步: 一直next到这里: 等待加载完成: 一直下一步到这里

宝塔面板部署青龙面板教程【简单易上手】

首先,你得有一台部署了宝塔面板的服务器(自己用本地电脑也可以)。 宝塔面板部署自行百度一下,很简单,这里就不走流程了,官网版本就可以,无需开心版。 首先,打开宝塔面板的软件商店,找到下图这个软件(Docker管理器)安装,青龙面板还是安装在docker里,这里依赖宝塔面板安装和管理docker。 安装完成后,进入SSH终端管理,输入代码安装青龙面板。ssh可以直接宝塔里操作,也可以安装ssh连接

PyTorch模型_trace实战:深入理解与应用

pytorch使用trace模型 1、使用trace生成torchscript模型2、使用trace的模型预测 1、使用trace生成torchscript模型 def save_trace(model, input, save_path):traced_script_model = torch.jit.trace(model, input)<