题目
我们都知道计算机是由软件和硬件组成的。硬件的核心是CPU,它承担着计算机所有的任务,操作系统是运行在硬件之上的软件,它负责资源的分配和管理,任务的调度。程序是具有一定功能的软件,每次执行程序的时候,它一定是完成一定的功能,例如,打开音乐播放器,完成播放音乐的功能,打开Word,完成文字编辑的功能。为了保证其功能实现的独立性,就需要一个专门管理和控制执行程序的数据结构–进程控制块。进程就是一个程序在一个数据集的一次动态执行过程。进程一般由程序、数据集、进程控制块三部分组成。我们一般写的程序是用来描述进程要完成哪些功能和如何完成。数据集是进程执行过程中需要哪些资源。进程代码块是用来记录进程的外部特征,描述进程执行额变化特征,可以用来控制和管理进程,是系统感知进程的唯一标识。 由于多线程共享进程的资源和内存空间,所以线程对内存数据的操作就有了问题,如下例: — public class Suquence{ private int value; public int getNext(){ value++; } } — A和B线程同时对该类发起访问,A线程value为9,执行程序之后为10,B线程value为9,执行程序之后也为10,但是我们想要的是A和B线程执行之后value值是11.这样问题就来啦,我们应该控制变量的访问,当A线程操作value时,B线程就不能对value进行操作,确保变量value的的去安全性,同一时间只能有一个线程能访问value,这就需要我们控制线程间的协同。