(1)进程是一个应用程序或是一个软件,如QQ、游戏、音乐等;而程序是静态的,相当于我们写的代码,进程是动态的,进程相当于 是把程序跑起来。
(2)线程是一个进程中的执行场景或执行单元,一个进程可以启动多个线程,一个进程至少有一个线程,真正执行的就是线程
例子:当在DOS命令窗口中输入:Java HelloWord按回车之后,会先启动JVM,而JVM就是一个进程,JVM主线程调用main方法,同时再启动一个垃圾回收线程负责看护,回收垃圾,最起码,现在的java 程序中至少有两个线程并发:一个是垃圾回收线程,一个是执行main方法的主线程。
概述:进程A和进程B的内存独立不共享,就像魔兽游戏是一个进程,酷狗音乐是一个进程, 这两个进程是独立的,不共享资源,在java语言中,线程A和线程B,在堆内存和方法区内存共享,但是栈内存独立,一个线程一个栈;假设启 动10个线程,就会有10个栈空间,每个栈和每个栈之间互不干扰,各自执行各自的,这就是多线程并发。
例子:火车站,可以看做是一个进程,火车站中的每一个售票窗口可以看做是一个线程,我在窗口1购票,你在窗口2购票,你不需 要等我,我也不需要等你,所以多线程并发可以提高效率。
总结:java中之所以有多线程机制,目的就是为了提高程序的处理效率。
问题:java中主线程(main方法)结束后是不是有可能程序也不会结束?
解答:main方法结束只是主线程结束了,主栈空了,其他的栈(线程)可能还在。
(1)什么是多线程并发?
t1线程执行t1的,t2线程执行t2的,t1不会影响t2,t2也不会影响t1,这叫做真正的多线程并发。
(2)对于单核的CPU来说,真的可以做到多线程并发吗?
1)对于多核的CPU电脑来说,真正的多线程并发是没有问题的,4核CPU表示同一个时间点上,可以真正的有4个进程并发执行
2)单核的CPU表示只有一个大脑,不能够真正做到多线程并发,但是可以给人一种“多线程并发”的感觉,对于单核CPU来说,在 某一个时间点实际上只能处理一件事情,但是由于CPU处理速度极快,多个线程之间频繁切换执行,给人的感觉是多个线程在 同时执行,如:线程A,播放魔兽音乐;线程B,运行魔兽游戏,但线程A和线程B频繁切换,给人的感觉是游戏一直在运行,音 乐一直在播放,两者在同时并发。