Java多线程和并发-进程和线程的区别

进程是资源分配的最小单位,线程是CPU调度的最小单位

  • 所有与进程相关的资源,都被记录在进程控制块(PCB)中
  • 进程是抢占处理机的调度单位;线程属于某个进程,共享其资源
  • 线程由堆栈寄存器、程序计数器和线程控制块(TCB)组成
    Java多线程和并发-进程和线程的区别
    Java多线程和并发-进程和线程的区别

总结

  • 线程不能看成独立应用,进程可看作独立应用。
  • 进程有独立的地址空间,相互不影响,线程只是进程不同的执行路径。当某个进程出错,不会影响其他进程的运行,而某个线程出现问题,该线程所属的进程也会出现问题。
  • 线程有自己的堆栈和局部变量,但没有独立的地址空间,多进程的程序比多线程程序健壮。
  • 进程的切换比线程的切换开销大。对于要求同时进行,并要共享某些变量的并发操作,只能用线程,不能用进程。每个独立的线程有一个程序运行的入口,顺序执行的序列和程序的出口。但是线程不能独立运行,必须依存于某一个应用程序中,由应用程序对线程进行控制