1.介绍多线程
发布日期:2021-08-26 18:18:21 浏览次数:44 分类:技术文章

本文共 1019 字,大约阅读时间需要 3 分钟。

多线程

多线程是用来做什么的,我想举一个例子简单说明一下。

我正在工作,但是到中午了,饿了,但是去做饭就必须停下手中的工作。

而做饭又是一件非常耗时的事情,在做饭的时候,工作就处于停滞状态。

这就是串行程序的执行方式。

工作 ------> 停止工作 ------> 做饭

而随着社会的发展,外卖行业的发展,我们可以打电话订外卖。

做饭本身交给了别人,解放了自己的时间,所以工作是不需要停滞的。

而线程的出现,往往就是对CPU资源的利用率的问题。

当然,也有进程本身太过笨重、进程间并行对资源的损耗过大。

我个人认为,线程的出现,与图形化的发展离不开。

比如,我要上传一个大的文件,而整个上传的过程,如果是单线程的话,画面会发生停滞,

只有当上传行为结束,我们才可以继续操作。

而多线程的出现,等于把某些费时的事情给解放了,你可以边下电影,边听歌。

我个人认为,想学好多线程,要把以下几个概念给理解请。

1.进程与线程。

进程 线程
进程在我看来,就是一段代码,点击运行在CPU上了,操作系统给分配了内存和进程号(PID),这就是一个进程。而一个进程是可以包括多个线程的,也就是说,进程是线程承载的容器。对于java来说,开启一个java进程,会开辟线程栈、堆、方法区。堆和方法区是所有线程所共享的。 线程就是CPU执行的最小单位。我们知道,CPU是通过时间片轮训方式调动线程资源的。每一个进程至少拥有一个线程。在形象一些,每开辟一个线程,JVM都会分配一个线程栈和一个线程号(TID)。所有线程共享堆与方法区中的资源。

2.同步与异步。

同步 异步
在我看来,就是顺序执行,我要保证中间每一个环节都执行结束,才能结束。 异步就是,我在执行一部分事时,我不关注它的执行结果。就像一个服务员在点餐时,给厨房吆喝一声要做啥就结束了。

3.并发与并行。

并发 并行
并发就是宏观上同时发生,微观上串行。单核CPU上跑的多线程,都是并发的,不是真正意义上的并行。 同时发生同样的事情,就好像我们上学时做课间操一样,在同一个点,好多人同时做同一个动作。

4.阻塞与非阻塞。

阻塞 非阻塞
就好像我们排队买票一样,前边那个人在买票,后面的人都买不了。都得等人家买完后,才可以轮到下一个人买。 我们不需要考虑别人的情况,想啥时候做就立即执行。

转载于:https://www.cnblogs.com/TimerHotel/p/thread01.html

转载地址:https://blog.csdn.net/weixin_33894640/article/details/92632928 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LDAP和单点登录
下一篇:jakarta-ant的使用(java编译工具)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月02日 22时19分18秒