Java多线程之进程和线程

在并发编程中有两个基本的几率就是进程和线程。在Java编程中并发编程更多的是关注线程。可是进程也是很重要的。编程

一个计算机通常会有不少活跃的进程和线程。有一点是没有疑问的在单核系统中,任什么时候候实际上都是只会有一个一个线程在运行。单核的系统的处理时间是按照OS中的时间片功能来在进程和线程之间共享的。拥有多个处理器或者拥有多核的处理器对于计算机系统来讲是愈来愈广泛的事情。这个极大的提升了并发进程和线程的系统处理能力,可是即便在没有多个处理器或者多核的简单系统中,计算机的并发也是存在的。并发

1.进程

每一个进程都有本身的运行环境。一个进程通常会有一个完整的私有的基本的资源集,特别的是每一个进程都有本身的内存空间。socket

进程一般被认为是程序和应用是同步的关系。可是,咱们看起来是一个单独的进程其实有多是多个进程共同做用的结果。为了方便进程之间的通讯,大部分的操做系统都是支持IPC(进程间通讯),好比:pipe和socket.IPC 不单单用于相同系统之间的进程通讯还适用于不一样系统之间的进程通讯。ui

JVM的大部分实现都是做为一个单独的进程的。而一个Java应用能够经过 ProcessBuilder 对象来建立其余的进程。操作系统

2.线程

线程被称为轻量级的进程。进程和线程都提供了运行环境,可是建立一个线程比建立一个进程耗费更少的资源。线程

线程存在于进程内部--也就是说每一个进程至少会有一个线程。线程共享进程的资源,包括内存和打开的文件。这个会通讯更加有效可是也会存在问题。对象