过程和线程

过程:

过程可了解为是一个正在运行的程序整体

过程是具备肯定独立性能的程序,是操作系统进行资源分配的根本单位

线程:

线程是操作系统进行调度的根本单位

过程 vs. 线程

  1. 一个程序至多有一个过程,一个过程至多有一个线程

  1. 线程比过程划分更细,执行开销更小,并发性更高
  2. 过程是一个实体,领有独立的资源,而同一过程中的多个线程是共享过程的资源的如下图:
  3. JVM在单过程中运行,JVM中的线程共享属于该过程的堆,所以几个线程能够同时拜访堆中的某个对象,这就导致了线程不平安
  4. 线程在过程中领有本人的Stack空间,所以一个线程调用办法以及其余局部变量是线程齐全的

总结

过程和线程是蕴含关系,然而多任务既能够由多过程实现,也能够由单过程内的多线程实现,还能够混合多过程+多线程。

具体采纳哪种形式,要思考到过程和线程的特点。

和多线程相比,多过程的毛病在于:

  • 创立过程比创立线程开销大,尤其是在Windows零碎上;
  • 过程间通信比线程间通信要慢,因为线程间通信就是读写同一个变量,速度很快。

而多过程的长处在于:

多过程稳定性比多线程高,因为在多过程的状况下,一个过程解体不会影响其余过程,而在多线程的状况下,任何一个线程解体会间接导致整个过程解体。

Java语言内置了多线程反对:一个Java程序实际上是一个JVM过程,JVM过程用一个主线程来执行main()办法,在main()办法外部,咱们又能够启动多个线程。此外,JVM还有负责垃圾回收的其余工作线程等。

因而,对于大多数Java程序来说,咱们说多任务,实际上是说如何应用多线程实现多任务。

和单线程相比,多线程编程的特点在于:多线程常常须要读写共享数据,并且须要同步。例如,播放电影时,就必须由一个线程播放视频,另一个线程播放音频,两个线程须要协调运行,否则画面和声音就不同步。因而,多线程编程的复杂度高,调试更艰难。

Java多线程编程的特点又在于:

  • 多线程模型是Java程序最根本的并发模型;
  • 后续读写网络、数据库、Web开发等都依赖Java多线程模型。

因而,必须把握Java多线程编程能力持续深刻学习其余内容。

关注公众号:java宝典