java中的多线程通信方式

未完成文章

博主原创文章,转载请说明出处,但是不说我也管不了你🏳️

转载或微调文章,源地址:[在此填入源地址]

前言

多线程在java的学习路上是必经之路,java的一大特点也是支持多线程(感觉现在主流的语言基本上都支持多线程了),这样就不用用户自己去调用操作系统的多线程功能来实现多线程程序。不过因为自己平时碰到需求很弱鸡,很少用到java的多线程,最近闲来没事想优化一下之前写的一个安卓的APP,结果就直接卡在了第一步的需求实现:在APP处于加载欢迎页面的过程中,同时检测APP是否有更新,如果有更新就在用户进入主页后弹出对话框等待用户确认是否更新,如果没有更新就啥也不干。由于直接代码写太乱了,各种线程乱成一麻绞在一起,我理了半天也没理清怎么把这个检测更新的线程加上去,然后想着重写算了,但是一时竟无从下键盘——为啥?因为我连java有几种实现多线程的方式都忘了。

今天主要就是帮助自己再理清一次java的多线程使用,以前没啥写笔记的习惯,学了就忘了,今天准备写点笔记记下来。本文章主要会从线程的概念入手,随后介绍java多线程的实现方式与实战案例,最后再到java多线程的通信方式,顺便实现上面说的那个检测更新的需求。

正文

1.进程与线程

在了解“进程”与“线程”之前,需要注意不管是“进程”还是“线程”,它们都是一个中文词语罢了,对于一些初学者来说很容易陷入到对这些词语本身的理解之中,但是要明白这些词语不过就是一个用来描述一种具体或者抽象的东西的符号,它们只是一个符号,仅此而已。就像是“大树”这个词语,不要去试图理解“大树”这个符号是什么东西,而是要理解平时使用“大树”这个符号时,我们实际是想要描述一个什么样的东西:例如一颗很粗壮的树。对于“进程”或者“线程”,实际上这个两个词语对于不了解的初学者来说是比较抽象的,一听到这两个词语就不知道这是啥意思,所以不要试图去理解这些符号本身是什么东西,要去理解这些符号本身想要表达的东西,这样以后一看到“进程”就像一看到“树”这个字一样,脑海里自然而然就出现了它背后所代表的东西。

1.1 什么是进程

虽然进程是计算机里面专属的词语,它用来描述一个运行的程序,但是实际上"进程"背后所代表的思想是符合现实中许多需要处理的事务特点的,所以接下来就从现实例子出发的同时与计算机结合来介绍这个概念。

假设有这么一个场景:目前你手中有一根吸管,面前有三杯奶茶,一杯是酸的,一杯是甜的,还有一杯是辣的(别问我为什么会有辣的奶茶存在🤺),假设这个时候你只能用那一根吸管最多同时喝一杯奶茶。

CPU对应吸管,一颗CPU同时只能处理一个事务,一根吸管同时只能吸一种奶茶

进程对应一整个想要喝的这件事

线程对应喝什么奶茶这件事

1.2 什么是线程

1.3 进程与线程的关系与意义

1.4 现代操作系统中的进程与线程

2.java的多线程

多种实现方式与各个方式的区别

2.1 thread

...

3.java的多线程通信

...

附录

附录1

附录2

参考文献