`
tubaluer
  • 浏览: 1444485 次
文章分类
社区版块
存档分类
最新评论
  • sblig: c / c++ 是不一样的都会输出 100
    j = j++

java线程的学习

 
阅读更多

上个礼拜在工作中(Java Web开发),对一个耗时较久的工具类进行了改造,让其支持多线程。同时客户端每隔一段时间发送一次ajax请求,用于获取工具类的处理进度信息,下面工作中的一些总结,其中进程和线程部分还有待进一步学习,总结如下:

1.进程

1.1进程的概念

翻阅操作系统原理的定义:进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和调度的基本单位。

进程是一个正在执行的程序;计算机中正在运行的程序实例可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。比如说Windows中的exe文件,当运行exe文件的时候,系统就会分配cpu和内存等资源,为该可执行的exe文件开辟一个新的进程,也就是说只有当程序执行之后系统才会为其开辟进程,程序没有执行的时候之后一个存放在磁盘中的可执行文件。

1.2进程的状态和转换

一个进程从创建而产生至撤销而消亡的整个生命期间,有时占有处理器执行,

时虽可运行但分不到处理器、有时虽有空闲处理器但因等待某个事件的发生而无法执行,这一切都说明进程和程序不相同,它是活动的且有状态变化的。

1)三态模型转换

一般来说,按进程在执行过程中的不同情况至少要定义三种不同的进程状态:

运行(running)态:进程占有处理器正在运行。

就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行。

阻塞状态:又称为阻塞(blocked)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成。

进程的转化图:


进程三态模型及转换

2)五态模型转换图

新建态:创建一个进程一般分为两步:首先,为一个新进程创建PCB(进程控制块),并填写必要的管理信息;其次,把该进程转入就绪状态并插入就绪队列中

终止态:终止一个进程也分成两步:首先操作系统对其进行善后处理,然后将PCB清空。

psPCB概念。

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方法。

其他

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics