java中的多线程通信方式
未完成文章
博主原创文章,转载请说明出处,但是不说我也管不了你🏳️
转载或微调文章,源地址:[在此填入源地址]
前言
多线程在java的学习路上是必经之路,java的一大特点也是支持多线程(感觉现在主流的语言基本上都支持多线程了),这样就不用用户自己去调用操作系统的多线程功能来实现多线程程序。不过因为自己平时碰到需求很弱鸡,很少用到java的多线程,最近闲来没事想优化一下之前写的一个安卓的APP,结果就直接卡在了第一步的需求实现:在APP处于加载欢迎页面的过程中,同时检测APP是否有更新,如果有更新就在用户进入主页后弹出对话框等待用户确认是否更新,如果没有更新就啥也不干。由于直接代码写太乱了,各种线程乱成一麻绞在一起,我理了半天也没理清怎么把这个检测更新的线程加上去,然后想着重写算了,但是一时竟无从下键盘——为啥?因为我连java有几种实现多线程的方式都忘了。
今天主要就是帮助自己再理清一次java的多线程使用,以前没啥写笔记的习惯,学了就忘了,今天准备写点笔记记下来。本文章主要会从线程的概念入手,随后介绍java多线程的实现方式与实战案例,最后再到java多线程的通信方式,顺便实现上面说的那个检测更新的需求。
正文
1.进程与线程
在了解“进程”与“线程”之前,需要注意不管是“进程”还是“线程”,它们都是一个中文词语罢了,对于一些初学者来说很容易陷入到对这些词语本身的理解之中,但是要明白这些词语不过就是一个用来描述一种具体或者抽象的东西的符号,它们只是一个符号,仅此而已。就像是“大树”这个词语,不要去试图理解“大树”这个符号是什么东西,而是要理解平时使用“大树”这个符号时,我们实际是想要描述一个什么样的东西:例如一颗很粗壮的树。对于“进程”或者“线程”,实际上这个两个词语对于不了解的初学者来说是比较抽象的,一听到这两个词语就不知道这是啥意思,所以不要试图去理解这些符号本身是什么东西,要去理解这些符号本身想要表达的东西,这样以后一看到“进程”就像一看到“树”这个字一样,脑海里自然而然就出现了它背后所代表的东西。
N年前的主流计算机一段时间内还只能处理一道程序,随着需求与技术的不断变化发展,计算机开始能够在一段时间内处理多道程序,这就是后来的“并发”概念。不过为了解决并发中多个程序运行时发生的各种冲突矛盾,例如怎么多个程序在运行时怎么区分谁是谁,“进程”这个概念便被发明出来了。而线程,是用于代替进程原有的部分功能而被发明出来的,通俗点讲,线程就是一个轻量级进程。进程负责非CPU资源分配,进程负责CPU调度执行,可以理解为:一个是“老板”,一个是“打工的”。
1.1 什么是进程
进程(process),从字面上理解非常直白:”(正在)进行的程序“,实际上进程也确实是这个意思,大差不差。进程可以有很多个人解释,但是一般都可解释为:
进程是?引用出处。
注:“进程”只是一个人为发明的概念,它是一个概念工具,用来描述一个动态的过程,在理解此概念时不可钻字眼牛角尖,只需从实际出发,一切便可豁然开朗。
1.2 什么是线程
1.3 进程与线程的关系与意义
1.4 现代操作系统中的进程与线程
2.java的多线程
多种实现方式与各个方式的区别