进程和线程(基础)

来源:互联网 发布:大白菜安装双系统linux 编辑:程序博客网 时间:2024/06/05 23:52

一.(引用别人对两者的分类)

  1. 定义方面:进程是程序在某个数据集合上的一次运行活动;线程是进程中的一个执行路径。
  2. 角色方面:在支持线程机制的系统中,进程是系统资源分配的单位,线程是系统调度的最小单位。
  3. 资源共享方面:进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。
  4. 独立性方面:进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。

二.线程的两种实现方式

       1.继承Thread类

        2.实现Runable()接口


多线程在操作中也是有一个固定的操作状态的:

创建状态:准备好了一个多线程对象,Thread t = new Thread()

就绪状态:调用了start()方法,等待CPU进行调度。

运行状态:执行run()方法。

阻塞状态:暂时停止执行,可能将资源交给其他线程使用。

终止状态(死亡状态):线程执行完毕了,不再进行的使用了。


比较两种方式,就刚开始接触多线程写的ticket火车站卖票(假如10张)代码比较,继承Thread类的方法每个线程都卖掉10张,发现并不能使用相同代码处理同一资源,但是另一种实现Runable()方法就可以实现处理同一资源的需求。

所以说:

实现Runnable接口比继承Thread类有如下的明显优点:

适合多个相同程序代码的线程去处理同一个资源。

可以避免由于单继承局限所带来的影响。

增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。

综合以上来看,开发中使用Runnable接口是比较适合的。