For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
java编程开发随着互联网的不断发展而被越来越多的程序员掌握,今天我们就通过案例分析来简单了解一下,java编程开发多线程重要性分析。
进程:对于一个OS,如果有一个程序在内存中开始运行,我们就可以说这个运行的程序就是一个进程。这个进程拥有自己独立的功能,并且是OS调度和分配资源的一个独立单位。
对于进程有三个特点
(1)独立性:进程是系统中独立存在的一个实体,拥有自己的资源的,没有自身的允许的话,其他用户进程是不能访问他内部的。
(2)动态性:进程是有生命周期的,他是在OS中活动的一个指令集合。而程序只是一个静态的指令集合。
(3)并发性:在只有一个处理器时,多个进程间也可以并发执行,互相并不影响。(进程间相互轮换执行,如同同时进行一般)
线程:线程是进程执行单元,也可以说是一个轻量级的进程。就像OS中进程是独立的一样,进程中的各个线程也是独立的。每个线程都有自己独立的堆栈及其他资源。互相并不受影响。而进程(这些线程的拥有者)的所有系统资源,被它包含的所有线程所共有分享。
线程也是独立的,他并不知道当前进程中其他线程的存在,而当前线程是否被执行,则与进程类似,是抢占式的。当前进程抢到了OS的执行权,而进程中的某一条线程又抢到了,当前可执行的权利(其他线程和进程被挂起)。
多线程就是一个进程中,可以有多个并发执行的独立的任务,每一个任务可以说就是一个线程。
他们的关系:
一个OS下边可以有若干的进程(但是至少要有一个进程)。
每一个进程下边又有若干的线程(至少要有一条线程)。
核心的原因就是:提高工作效率,不要出现闲时等待,各个线程抢占式的工作。试想下,如果我们遇到什么问题,是应该一直苦苦等待(是什么都不做的等待)下去性能高呢,还是快速的切换到其他工作上去,我想在大部分的情况下都是快速抢占吧。(有时可能会出现,你刚刚切换,原来苦苦等待的事情刚刚结束。。。。这种碰巧的情况),举个实际点的例子,当我们查询某一个数据时,这个数据可能非常大,我们需要等待好久才能在页面上加载下来,此时倘若单线程苦苦等待时,我们的程序就是被挂死了(试想下没有响应的场景),直到过去了很久,页面才被激活,变成可用的状态。这期间我们什么事情也干不了(对该程序),这时的场景效率很低下,而且非常不友好。
倘若有很好的多线程支持的话,那么在加载数据、绘制图片时,我们还可以随意的切换程序,并不影响其他的操作,从而提高性能。于此同时,由于多线程共享父进程的其他所有资源,所以线程间可以很好的交流数据(数据共享和通信),并且新开辟的线程(新开辟的任务),OS并不会为该进程分配大量的资源(相对于为新开辟任务而创建新进程而言)。
总结一下有如下几个优点
1、线程间可以很好的共享内存资源,进程间是完全独立内存的,所以不方便。(前文中提到线程间是相互独立的,除非一进程允许,否则其他的进程是不允许直接访问它地址的)
2、系统创建新线程的开销,新创建进程的开销要小的多,因此可大大降低多并发的代价。
3、在编码时,我们可以通过类库和代码很好的管理各个线程,而不是直接通过操作系统来指挥当前执行的进程。从而大大的方便了我们可以处理并发任务的执行。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。