Java是一门面向对象编程语言。

进程与线程

进程是CPU资源分配的最小单位,线程是CPU调度的最小单位,这是进程与线程的概念,但是它们很抽象,不易理解,下面我们来详细举例说明,方便大家理解。

1、举例说明进程与线程

CPU:工厂(一个)

进程:车间(多个)

线程:工人(多个)

内存空间:每个车间里的房间(多个)

1、一个工厂,它无时无刻都在运行着。

CPU无时无刻都在运行。

2、工厂的电力有限,同一时间段只能给一个车间使用,一个车间开工,其他车间必须停工。

每个CPU在同一时间段只能运行一个进程,一个进程在运行,其他进程就处于等待状态。

3、一个车间有很多工人,工人们在一个车间里完成一个任务。

一个进程由多个线程组成。

4、一个车间有很多个房间,这些房间每个工人都可以自由进出,也就是说车间的房间是工人共享的。

进程的内存空间对线程共享,每个线程都可以使用进程的共享内存。

5、因为车间里的房间大小不同,有些房间能容纳很多人,有些房间只能容纳一个人,比如厕所。厕所一旦有人,其他人都不能进。

一个线程在使用某些共享内容时,其他线程必须等这个线程结束,才能使用这块内存。

6、有个简单粗暴的方法可以防止他人进入,就是在门口加一把锁。先到的工人锁上门,后到的人看到锁,就在门口排队等待,等锁开了再进去。

这里的锁指的是互斥锁,用来防止多线线程同时使用某块内存空间。

7、还有一些房间,可以容纳多个工人,比如厨房(假设最多容纳5个工人)。当人数超过5个的时候,多出来的人就在门口等待。

某些内容区域,只能提供给固定数量的线程使用。

8、这时的解决方法是,在门口放5把钥匙,每个功能只能领一把钥匙,进去时,领一把钥匙,出来时,把钥匙放回原处,一旦后来的人发现门口没有钥匙了,就排队等待。

这种做法叫信号量,用来保证多个线程同时访问同一块区域时互不冲突。

2、进程与线程区别

1、进程是资源分配的基本单位,线程是程序执行的基本单位。

2、每个进程都有自己的内存空间,而多个线程共享这一块内存空间。

3、进程结束,该进程下的所有线程都被销毁。而一个线程结束不影响当前进程下的其他线程。

当前位置:Java教程网 »
本文地址:http://www.javajcw.com/2.html
喜欢 or
默认图片
发表我的评论
取消评论