飞道的博客

理解进程与线程

279人阅读  评论(0)

理解进程与线程

1、什么是进程?什么又是线程?

        进程是一个应用程序(1个进程是一个软件)。

        线程是一个进程中的执行场景/执行单元。

        一个进程可以启动多个线程。

2、对于java程序来说,当在DOS命令窗口中输入:

        java HelloWorld 回车之后。

        会先启动JVM,而JVM就是一个进程。

        JVM再启动一个主线程调用main方法。

        同时再启动一个垃圾回收线程负责看护,回收垃圾。

        最起码,现在的java程序中至少有两个线程并发,

        一个是垃圾回收线程,一个是执行main方法的主线程。

3、进程与进程、线程与线程之间是什么关系?

        进程可以看做是现实生活当中的公司。

        线程可以看做是公司当中的某个员工。

        注意:

                进程A和进程B的内存独立不共享。(阿里巴巴和京东资源不会共享的!)

                魔兽游戏是一个进程

                酷狗音乐是一个进程

                这两个进程是独立的,不共享资源。

        线程A和线程B呢?

                在java语言中:

                        线程A和线程B,堆内存和方法区内存共享。

                        但是栈内存独立,一个线程一个栈。

                        假设启动10个线程,会有10个栈空间,每个栈和每个栈之间,

                        互不干扰,各自执行各自的,这就是多线程并发。

                火车站,可以看做是一个进程。

                火车站中的每一个售票窗口可以看做是一个线程。

                我在窗口1购票,你可以在窗口2购票,你不需要等我,我也不需要等你。

                所以多线程并发可以提高效率。

        java中之所以有多线程机制,目的就是为了提高程序的处理效率。

4、思考一个问题:

        使用了多线程机制之后,main方法结束,是不是有可能程序也不会结束。

        答:main方法结束只是主线程结束了,主栈空了,其它的栈(线程)可能还在压栈弹栈。

5、分析一个问题:对于单核的CPU来说,真的可以做到真正的多线程并发吗?

        对于多核的CPU电脑来说,真正的多线程并发是没问题的。

        4核CPU表示同一个时间点上,可以真正的有4个进程并发执行。

        什么是真正的多线程并发?

                t1线程执行t1的。 t2线程执行t2的。

                t1不会影响t2,t2也不会影响t1。这叫做真正的多线程并发。

        单核的CPU表示只有一个大脑:

                不能够做到真正的多线程并发,但是可以做到给人一种“多线程并发”的感觉。

                对于单核的CPU来说,在某一个时间点上实际上只能处理一件事情,但是由于

                CPU的处理速度极快,多个线程之间频繁切换执行,给人带来的感觉是:多个事情

                同时在做!!!!!

                        线程A:播放音乐

                        线程B:运行魔兽游戏

                        线程A和线程B频繁切换执行,人类会感觉音乐一直在播放,游戏一直在运行,

                给我们的感觉是同时并发的。


转载:https://blog.csdn.net/heliuerya/article/details/128463375
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场