程序:为了完成某种任务用某一种语言编写的一组指令的集合就叫程序。程序就是一段静态的代码。
进程:进程是程序的依次执行过程,或者说是正在运行的一个程序。这是一个动态的过程,有它自身的产生运行和消亡的过程--生命周期。进程是资源分配的基本单位。
线程:进程可进一步的划分为线程,线程是一个程序内部的一条执行路径。线程是调度和执行的基本单位,每一个线程拥有独立的程序计数器和运行栈,线程之间切换的开销相对来说比较小。
备注:一个Java程序至少有三个线程:main()线程、垃圾收集线程、异常处理线程。
并行:多个CPU同时执行多个任务。
并发:一个CPU同时执行多个任务。
Java中的线程分为用户线程和守护线程。
一个线程完整的生命周期通常包含五个部分:
多线程安全问题,是由于多个线程在访问共享的数据(共享的资源),并且操作共享数据的语句不止一条。那么这样在操作多条共享数据的线程之间就可能发生线程切换。只要切换就可能有安全问题。
当多个线程执行解决某个方法时,不管这些线程如何交替的执行,我们在主程序中不需要去做任何的同步,这个类的结果行为都是我们设想的正确行为,那么我们就可以说这个类时线程安全的。
原文:https://www.cnblogs.com/BaoZiY/p/10726400.html