上个礼拜在工作中(Java Web开发),对一个耗时较久的工具类进行了改造,让其支持多线程。同时客户端每隔一段时间发送一次ajax请求,用于获取工具类的处理进度信息,下面工作中的一些总结,其中进程和线程部分还有待进一步学习,总结如下:
1.进程
1.1进程的概念
翻阅操作系统原理的定义:进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和调度的基本单位。
进程是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。比如说Windows中的exe文件,当运行exe文件的时候,系统就会分配cpu和内存等资源,为该可执行的exe文件开辟一个新的进程,也就是说只有当程序执行之后系统才会为其开辟进程,程序没有执行的时候之后一个存放在磁盘中的可执行文件。
1.2进程的状态和转换
一个进程从创建而产生至撤销而消亡的整个生命期间,有时占有处理器执行,
时虽可运行但分不到处理器、有时虽有空闲处理器但因等待某个事件的发生而无法执行,这一切都说明进程和程序不相同,它是活动的且有状态变化的。
(1)三态模型转换
一般来说,按进程在执行过程中的不同情况至少要定义三种不同的进程状态:
运行(running)状态:进程占有处理器正在运行。
就绪(ready)状态:进程具备运行条件,等待系统分配处理器以便运行。
阻塞状态:又称为阻塞(blocked)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成。
进程的转化图:
进程三态模型及转换
(2)五态模型转换图
新建态:创建一个进程一般分为两步:首先,为一个新进程创建PCB(进程控制块),并填写必要的管理信息;其次,把该进程转入就绪状态并插入就绪队列中
终止态:终止一个进程也分成两步:首先操作系统对其进行善后处理,然后将PCB清空。
ps:PCB概念。
PCB是为了描述和控制进程的运行,系统为每个进程定义了一个数据结构--进程控制块PCB(processcontrolblock),它是进程实体(程序段、相关的数据段和PCB)的一部分,是操作系统中最重要的记录型数据结构。PCB中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。
进程五态模型及转换
(3)具有挂起功能系统的进程状态及其转换
由于进程的不断创建,系统的资源特别如内存资源已经不能满足进程运行的要求;或者由于系统故障等原因,需要挂起一些进程;或者由于其他的种种原因,必须把某些进程挂起(suspend),对换到磁盘镜像区中,释放它所占有的某些资源,暂时不参与低级调度,起到平滑系统操作负荷的目的。
具有挂起功能系统的进程及转换
2线程
2.1线程和进程的关系
进程是系统进行资源分配的基本单位,按进程为单位分给存放其映象所需要的虚地址空间、执行所需要的主存空间、完成任务需要的其他各类外围设备资源和文件。同时,进程也是处理器调度的基本单位。
而线程具有许多传统进程所具有的特征,所以又成为轻量级集成或者进程元,可以把线程作为调度和分配。在一个进程中,通常拥有一个或者多个线程,这多个线程线程不拥有资源,而是共享进程的资源。用一句话总结就是:在一个进程中,进程是作为资源拥有的基本单位,而线程是作为调度和分派的基本单位,多个线程共享这个进程的资源。
2.2线程的作用
提高系统内程序并发执行的速度,从而进一步提高系统的吞吐量。引入线程之后可以减少程序在并发执行时所付出的时空开销,使系统具有更好的并发性。
3 java中的线程
3.1 java中创建线程的两种方法
java中创建线程的两种方法:第一种是实现Runnable接口,第二种是继承Thread类,下面分别对这两种方式进行阐述:
(1)实现Runnable接口(推荐使用这种方法)
我们还是来看一个具体的例子吧,
(2)继承Thread类
需要注意的是,继承
Thread类必须重写Thread类的run方法。
其他
分享到:
相关推荐
很好的线程学习资料.。含有部分源代码。
java线程学习笔记
Java线程学习
NULL 博文链接:https://ralf-realman.iteye.com/blog/417416
java线程 线程 教程 java线程教程 java线程学习资料 本教程有什么内容? 本教程研究了线程的基础知识— 线程是什么、线程为什么有用以及怎么开始编写使用线程的简单 程序。 我们还将研究更复杂的、使用线程的应用...
里面包含了几个Java线程学习的例子,程序既简单又能让人很快理解线程的工作原理,是初学者不错的选择
Java线程学习好资料,JAVA多线程。
附带JAVA线程源代码,从代码中分析和学习java线程。
java线程学习总结.pdf
JAVA多线程学习,提高JAVA性能,多线程并列. JAVA高级学习内容。
java中多线程下载学习,又新增了断点的实现,可以实现暂停继续下载网络文件的功能
java 线程专题学习, 包含拽取的 javaeye 上的经典教程
对于学习java线程的初学者是很有用的资料,让自己很快的上手,帮助自己学习很快的知识。。。
关于java线程的一些理解。 和大家分享一下
本教程适用于拥有丰富 Java 语言应用知识,但又没有多少多线程或并发性经验的Java 程序员。 学习完本教程之后,您应该可以编写一个使用线程的简单程序。您还应该可以阅读并理解以简单方法使用线程的程序。
电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 java线程第二版中英文 ...
本教程适用于拥有丰富Java 语言应用知识,但又没有多少多线程或并发性经验的 Java 程序员。 学习完本教程之后,您应该可以编写一个使用线程的简单程序。您还应该可以阅读并理解以简单方 法使用线程的程序。