进程和线程(基础)
2017-07-20 15:29
141 查看
一.(引用别人对两者的分类)
定义方面:进程是程序在某个数据集合上的一次运行活动;线程是进程中的一个执行路径。
角色方面:在支持线程机制的系统中,进程是系统资源分配的单位,线程是系统调度的最小单位。
资源共享方面:进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。
独立性方面:进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。
二.线程的两种实现方式
1.继承Thread类
2.实现Runable()接口
多线程在操作中也是有一个固定的操作状态的:
创建状态:准备好了一个多线程对象,Thread t = new Thread()
就绪状态:调用了start()方法,等待CPU进行调度。
运行状态:执行run()方法。
阻塞状态:暂时停止执行,可能将资源交给其他线程使用。
终止状态(死亡状态):线程执行完毕了,不再进行的使用了。
比较两种方式,就刚开始接触多线程写的ticket火车站卖票(假如10张)代码比较,继承Thread类的方法每个线程都卖掉10张,发现并不能使用相同代码处理同一资源,但是另一种实现Runable()方法就可以实现处理同一资源的需求。
所以说:
实现Runnable接口比继承Thread类有如下的明显优点:
适合多个相同程序代码的线程去处理同一个资源。
可以避免由于单继承局限所带来的影响。
增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。
综合以上来看,开发中使用Runnable接口是比较适合的。
定义方面:进程是程序在某个数据集合上的一次运行活动;线程是进程中的一个执行路径。
角色方面:在支持线程机制的系统中,进程是系统资源分配的单位,线程是系统调度的最小单位。
资源共享方面:进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。
独立性方面:进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。
二.线程的两种实现方式
1.继承Thread类
2.实现Runable()接口
多线程在操作中也是有一个固定的操作状态的:
创建状态:准备好了一个多线程对象,Thread t = new Thread()
就绪状态:调用了start()方法,等待CPU进行调度。
运行状态:执行run()方法。
阻塞状态:暂时停止执行,可能将资源交给其他线程使用。
终止状态(死亡状态):线程执行完毕了,不再进行的使用了。
比较两种方式,就刚开始接触多线程写的ticket火车站卖票(假如10张)代码比较,继承Thread类的方法每个线程都卖掉10张,发现并不能使用相同代码处理同一资源,但是另一种实现Runable()方法就可以实现处理同一资源的需求。
所以说:
实现Runnable接口比继承Thread类有如下的明显优点:
适合多个相同程序代码的线程去处理同一个资源。
可以避免由于单继承局限所带来的影响。
增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。
综合以上来看,开发中使用Runnable接口是比较适合的。
相关文章推荐
- 【java基础】Java 中的进程与线程
- java基础:进程和线程之间的关系
- linux进程、线程常用的几个基础知识点
- Java多线程(一)进程和线程的基础知识
- Java多线程基础:进程和线程之由来
- 程序员面试宝典随笔记(一)---线程和进程1,-基础信息
- Linux进程基础知识 Linux线程介绍
- Java多线程基础:进程和线程之由来
- linux之进程和线程基础知识
- PHP CLI编程基础知识积累(进程、子进程、线程)
- os基础--线程进程面试题
- Java多线程基础:进程和线程之由来
- C# WinForm基础二 控件、对话框类、容器、进程、线程
- 基础知识:线程,进程。多进程,多线程。并发,并行的区别
- C#网络编程基础之进程和线程详解
- Linux进程和线程的基础与管理
- Python基础学习(5)网络编程socket、文件上传、粘包问题、socketserver、IO多路复用、线程与进程、进程池、线程池、上下文管理、协程
- Java高并发程序-Chapter2 Java并行程序基础 (第四讲)进程和线程
- os基础--线程进程面试题01
- Java多线程基础:进程和线程之由来