课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,程序员所掌握的编程开发技术也在逐渐增加,而今天我们就通过案例分析来了解一下,进程与线程的关系都有哪些。
进程和线程是并发编程的两个基本的执行单元。在Java中,并发编程主要涉及线程。
一个计算机系统通常有许多活动的进程和线程。在给定的时间内,每个处理器只能有一个线程得到真正的运行。对于单核处理器来说,处理时间是通过时间切片来在进程和线程之间进行共享的。
现在多核处理器或多进程的电脑系统越来越流行。这大大增强了系统的进程和线程的并发执行能力。但即便是没有多处理器或多进程的系统中,并发仍然是可能的。
1、进程
进程有一个独立的执行环境。进程通常有一个完整的、私人的基本运行时资源;特别是,每个进程都有其自己的内存空间。
进程往往被视为等同于程序或应用程序。然而,用户将看到一个单独的应用程序可能实际上是一组合作的进程。大多数操作系统都支持进程间通信(InterProcessCommunication,简称IPC)资源,如管道和套接字。IPC不仅用于同个系统的进程之间的通信,也可以用在不同系统的进程。
大多数Java虚拟机的实现作为一个进程运行。Java应用程序可以使用ProcessBuilder对象创建额外的进程。多进程应用程序超出了本书的讲解范围。
二、线程
线程有时被称为轻量级进程。进程和线程都提供一个执行环境,但创建一个新的线程比创建一个新的进程需要更少的资源。
线程中存在于进程中,每个进程都至少一个线程。线程共享进程的资源,包括内存和打开的文件。这使得工作变得高效,但也存在了一个潜在的问题——通信。
多线程执行是Java平台的一个重要特点。每个应用程序都至少有一个线程,或者几个,如果算上“系统”的线程(负责内存管理和信号处理)那就更多。但从程序员的角度来看,你启动只有一个线程,称为主线程。这个线程有能力创建额外的线程。
三、同步(Synchronization)
线程间的通信主要是通过共享访问字段以及其字段所引用的对象来实现的。这种形式的通信是非常有效的,但可能导致2种可能的错误:线程干扰(threadinterference)和内存一致性错误(memoryconsistencyerrors)。同步就是要需要避免这些错误的工具。
但是,同步可以引入线程竞争(threadcontention),当两个或多个线程试图同时访问相同的资源时,并导致了Java运行时执行一个或多个线程更慢,或甚至暂停他们的执行。饥饿(Starvation)和活锁(livelock)是线程竞争的表现形式。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!